wordpress收费下载资源主题
wordpress付费下载资源插件

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钩子添加元框的过程。当文章编辑页面加载时,就会在页面的指定位置显示自定义的元框,并且可以将数据保存到数据库中。

定制开发
本站承接WordPress等系统建站仿站、二次开发、主题插件定制等开发服务
在线咨询
  • 请直接说明需求,勿问在否
    QQ:1-247-246-247

  • QQ一群:104228692(满)
  • QQ二群:64786792
在线咨询
本站承接WordPress建站仿站、二次开发、主题插件定制等PHP开发服务!

了解详情