WordPress hook钩子add_meta_boxes的用法详解

add_meta_boxes是WordPress的一个钩子(hook),用于在文章编辑页面中添加自定义的元框(meta box)。

使用该钩子的方式是在主题或插件的代码中使用add_action函数来调用。

add_action(\'add_meta_boxes\', \'my_custom_meta_box\');

这里,add_meta_boxes是钩子的名称,my_custom_meta_box是一个回调函数,用于实现添加元框的功能。

回调函数的代码可以放在主题的functions.php文件中,或者作为一个单独的插件文件。

在回调函数中,需要使用add_meta_box函数来实现对元框的添加。add_meta_box函数的语法如下:

add_meta_box($id, $title, $callback, $post_type, $context, $priority, $callback_args);

参数说明:
- $id:元框的ID,用于区分不同的元框,可以是字符串或数组。
- $title:元框的标题,显示在元框的顶部。
- $callback:元框内容的回调函数,用于生成元框的HTML代码。
- $post_type:应用元框的文章类型,可以是\'post\'、\'page\'、\'custom_post_type\'等。
- $context:元框的位置,可以是\'normal\'(默认)、\'side\'或\'advanced\'。
- $priority:元框的优先级,可以是\'high\'、\'core\'、\'default\'、\'low\'等。
- $callback_args:传递给回调函数的参数。

回调函数的代码可以使用WordPress的内置函数来生成HTML代码,如add_meta_box函数的第三个参数:

function my_custom_meta_box() {
global $post;

echo \'\';

// 元框的HTML代码
echo \'\';
echo \'ID, \'my_custom_meta_field\', true) . \'\" />\';
}

在回调函数中,我们可以使用get_post_meta函数来获取文章的自定义字段的值,并将其显示在元框中。同时,我们还需要在回调函数中添加一个隐藏字段,用于验证提交的数据是否安全。

最后,我们还需要使用save_post钩子来保存自定义字段的值,以便在文章保存时将其存储到数据库中。

add_action(\'save_post\', \'save_my_custom_meta_box\');

function save_my_custom_meta_box($post_id) {
if (!isset($_POST[\'my_custom_meta_box_nonce\']) || !wp_verify_nonce($_POST[\'my_custom_meta_box_nonce\'], basename(__FILE__))) {
return;
}

if (defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE) {
return;
}

if (isset($_POST[\'post_type\']) && $_POST[\'post_type\'] == \'page\') {
if (!current_user_can(\'edit_page\', $post_id)) {
return;
}
} else {
if (!current_user_can(\'edit_post\', $post_id)) {
return;
}
}

if (isset($_POST[\'my_custom_meta_field\'])) {
update_post_meta($post_id, \'my_custom_meta_field\', sanitize_text_field($_POST[\'my_custom_meta_field\']));
}
}

在该代码中,我们首先使用wp_verify_nonce函数来验证提交的数据是否安全。然后,判断是否为自动保存或草稿,并检查当前用户的权限。最后,使用update_post_meta函数来保存自定义字段的值。

这样,就完成了使用add_meta_boxes钩子添加元框的过程。当文章编辑页面加载时,就会在页面的指定位置显示自定义的元框,并且可以将数据保存到数据库中。