add_meta_box
是 WordPress 中的一个函数,用于在编辑页面(如文章、页面、自定义帖子类型等)上添加自定义的元框(meta box)。元框允许开发者添加自定义的输入字段,以便用户可以输入额外的信息,这些信息随后可以保存并与特定的帖子关联。
要保存选定项ID列表,你需要创建一个自定义字段,并在 save_post
钩子中处理数据的保存。以下是一个简单的示例:
// 添加元框
function my_add_meta_boxes() {
add_meta_box(
'my-meta-box-id', // 元框ID
'My Meta Box Title', // 元框标题
'my_meta_box_callback', // 显示元框内容的回调函数
'post', // 在哪种帖子类型上显示元框
'normal', // 元框的位置
'high' // 元框的优先级
);
}
add_action('add_meta_boxes', 'my_add_meta_boxes');
// 显示元框内容的回调函数
function my_meta_box_callback($post) {
wp_nonce_field(basename(__FILE__), 'my_meta_box_nonce');
$selected_ids = get_post_meta($post->ID, '_my_selected_ids', true);
?>
<label for="my_selected_ids">Selected IDs:</label>
<input type="text" id="my_selected_ids" name="my_selected_ids" value="<?php echo esc_attr($selected_ids); ?>" />
<?php
}
// 保存元框数据
function my_save_meta_box_data($post_id) {
if (!isset($_POST['my_meta_box_nonce'])) {
return;
}
if (!wp_verify_nonce($_POST['my_meta_box_nonce'], basename(__FILE__))) {
return;
}
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return;
}
if (!current_user_can('edit_post', $post_id)) {
return;
}
if (!isset($_POST['my_selected_ids'])) {
return;
}
$selected_ids = sanitize_text_field($_POST['my_selected_ids']);
update_post_meta($post_id, '_my_selected_ids', $selected_ids);
}
add_action('save_post', 'my_save_meta_box_data');
要获取选定项ID列表,你可以使用 get_post_meta
函数。以下是一个示例:
$post_id = get_the_ID(); // 获取当前帖子的ID
$selected_ids = get_post_meta($post_id, '_my_selected_ids', true);
if ($selected_ids) {
$ids_array = explode(',', $selected_ids); // 将逗号分隔的字符串转换为数组
// 现在你可以使用 $ids_array 数组中的ID
}
这个功能可以用于多种场景,例如:
save_post
钩子正确注册并且回调函数能够执行。nonce
验证通过。add_meta_boxes
钩子正确注册并且回调函数能够执行。get_post_meta
是否正确获取到数据。wp_nonce_field
和 wp_verify_nonce
来防止 CSRF 攻击。sanitize_text_field
来清理用户输入的数据,防止 XSS 攻击。领取专属 10元无门槛券
手把手带您无忧上云