WordPress添加自定义文章栏目

WordPress允许自定义添加文章自定义栏目,如下图,可以在文章编辑的时候,添加一个栏目随着文章发布和更新一起提交。

1.注册函数

首先添加动作,第一个参数为指定WordPress动作类型,第二个参数为指定函数

add_action('add_meta_boxes', 'fun_plug_add_meta_box');

指定函数

function fun_plug_add_meta_box() { 
add_meta_box('down_link', '下载地址', 'meta_box_down_link_form', 'post', 'advanced', 'high');
 }

add_meta_box函数功能如下

$id HTML 代码中设置区域中id属性的值,也是WordPress文章自定义栏目的一个唯一标识符

$title 区域中的标题名称,支持HTML代码
$callback 添加的设置区域的显示函数,界面在这个函数里面实现
$post_type 在 post 还是 page 的编辑页面中显示
$context 设置区域的显示位置,主编辑区(advanced)、边栏(side)
$priority 设置区域显示的优先级,high(高),low(低),default(默认)
$callback_args 回调函数接受的附加参数,一般省略

回调函数如下:

function meta_box_down_link_form($post)
{
    // 创建临时隐藏表单,为了安全
    wp_nonce_field('meta_box_down_link_form', 'meta_box_down_link_form_nonce');
    // 获取之前存储的值
    $value = get_post_meta($post->ID, 'down_link', true);
    ?>
     <input type="text" value="<?php echo $value?>">
    <?php
}

至此,后台文章已经正常显示内容了。

相关解释

【1】wp_nonce_field函数,本函数为WordPress防止攻击的一个函数,原理是生成一个随意的字符,在保存函数中,验证这个字符是否和提交的字符一致,如果不一致,就说明可能这个内容来自第三方伪造内容提交,而不是在文章页面直接提交。

当然,如果不写这个函数,也是可以的,在保存的函数中,也不用验证就是了。

函数第一个参数为唯一标识符,第二个为表单名称,在后面保存文章字段的时候,可以通过$_POST['名称']来获取这个值。

【2】get_post_meta函数,WordPress中,通过get_post_meta获取保存的文章额外字段,通过update_post_meta保存额外字段。

2.保存文章数据

上面注册函数后,也能提交内容了,但是还没有保存内容,所以无法显示东西。需要接管WordPress文章保存函数。

注册保存文章动作,第二个参数为自定义函数,WordPress会传入一个文章ID参数

add_action('save_post', 'fun_save_post_down_link');

自定义函数,本函数处理文章额外字段的保存

function fun_save_post_down_link($post_id)
{
    // 安全检查
    // 检查是否发送了一次性隐藏表单内容
    if (!isset($_POST['meta_box_down_link_form_nonce'])) {
        return;
    }
    // 判断隐藏表单的值与之前是否相同
    if (!wp_verify_nonce($_POST['meta_box_down_link_form_nonce'], 'meta_box_down_link_form')) {
        return;
    }
    // 判断该用户是否有权限
    if (!current_user_can('edit_post', $post_id)) {
        return;
    }
    // 判断 Meta Box 是否为空
    if (!isset($_POST['down_link1'])) {
        return;
    }
    update_post_meta($post_id, 'down_link', $_POST['down_link1']);
}

其中,安全检查中,需要上面的wp_nonce_field支持,如果没有创建这个随机值,就不需要判断。

首先判断是否有这个值,如果没有,说明提交可能是伪造的。接着判断值是否一致,通过函数wp_verify_nonce来判断,第一个为要对比的值,通过$_POST获取提交过来的值,第二参数为唯一标识符,和wp_nonce_field函数的第一个参数一致。

接着判断用户是否有权限保存文章,current_user_can函数来判断。

最后判断是否有提交自定义的值,不为空的话,就使用函数update_post_meta来保存这个数据。

 

上一篇 使用WordPress自带字体图标
下一篇 layui 获取select值和文本
applek

applek管理员

个人说明在个人中心里面设置

本月创作热力图

2026年3月
最新评论
hfloke
hfloke
3月1日
新版本安装更新后,页面有问题哦
丙氨酸
丙氨酸
2月27日
测试
评论于关于本站
RiseForever
RiseForever
2月23日
听说新主题发布了,来测试下评论区。
李贰捌
李贰捌
12月25日
AI摘要打开了,对接的阿里云,测试成功,但是前台为什么不显示?
javac
javac
12月8日
redis和memcached的完整支持有排期嘛?