搜索
当前所在位置: 首页>网站问题

wordpress 为自定义类型文章新增自定义字段

发布时间:2023-12-03 01:22:30 作者:超级管理员 点击:59 【 字体:

1、注册一个 Meta Box 示例:

add_action( 'add_meta_boxes', 'product_director' );//创建字段,注册作用
function product_director() {//创建字段时调用的函数
    add_meta_box(
        'product_director',//字段的唯一ID吧
        '产品价格',//字段的名称,在表单上方显示
        'product_director_meta_box',//回调函数
        'product',//所添加的文章类型
        'side',
        'low'
    );
}

2、创建回调函数product_director_meta_box

配置参数里面指定了回调函数product_director_meta_box,需要在这个函数里面创建表单:

function product_director_meta_box($post) {
    // 创建临时隐藏表单,为了安全
    wp_nonce_field( 'product_director_meta_box', 'product_director_meta_box_nonce' );
    // 获取之前存储的值
    $value = get_post_meta( $post->ID, '_product_director', true );
?>
    <label for="product_director"></label>
    <input type="text" id="product_director" name="product_director" value="<?php echo esc_attr( $value ); ?>" placeholder="输入产品价格">
<?php
}

3、提示:添加上面代码后,新建文章时,在右则就可以看到一个产品价格的输入框。 这时候表单还不能用,因为提交文章之后并没有保存这个 Meta Box 的内容,下面是验证保存内容的代码:

add_action( 'save_post', 'product_director_save_meta_box' );//在保存文章时,执行回调函数
function product_director_save_meta_box($post_id){//回调函数,显示表单,用于新建和编辑显示表单
    // 安全检查
    // 检查是否发送了一次性隐藏表单内容(判断是否为第三者模拟提交)
    if ( ! isset( $_POST@['product_director_meta_box_nonce'] ) ) {//安全判断
        return;
    }
    // 判断隐藏表单的值与之前是否相同
    if ( ! wp_verify_nonce( $_POST@['product_director_meta_box_nonce'], 'product_director_meta_box' ) ) {//主要是修改时,判断product_director_meta_box函数提交过来的是不是和之前的一样,一样就不再次提交了
        return;
    }
    // 判断该用户是否有权限
    if ( ! current_user_can( 'edit_post', $post_id ) ) {//判断有没有权限进行新建、编辑。。。。
        return;
    }
 
    // 判断 Meta Box 是否为空
    if ( ! isset( $_POST@['product_director'] ) ) {//提交的字段为空字段
        return;
    }
 
    $product_director = sanitize_text_field( $_POST@['product_director'] );//过滤净化表单数据
    update_post_meta( $post_id, '_product_director', $product_director );//这句就是sql语句吧,_product_director为保存在数据库的meta_key字段
}

把上面的代码按顺序添加到主题的functions.php文件,至此,Meta Box注册完成,就可以开始添加参数了。

4、如何调用?

<?php 
if(get_post_meta($post->ID,'_product_director',true)){
echo get_post_meta($post->ID,'_product_director',true);
}
?>

5、把Meta Box添加把后台所有产品列表字段中显示,通过manage_$post_type_posts_custom_column实现。

add_action("manage_posts_custom_column",  "product_custom_columns");
add_filter("manage_edit-product_columns", "product_edit_columns");
function product_custom_columns($column){
    global $post;
    switch ($column) {
        case "product_director":
            echo get_post_meta( $post->ID, '_product_director', true );
            break;
    }
}
function product_edit_columns($columns){
    $columns['product_director'] = '产品价格';
    return $columns;
}


阅读全文
相关推荐

.AI 域名价值飙升,总价值达450万美元

.AI 域名价值飙升,总价值达450万美元
2023年,.AI域名市场迎来了显著的增长,将. ai作为Anguilla(安圭拉)的国别顶级域名(ccTLD)提升为一项重要的数字资产。这一增长的主要原因在于“AI”代表了人工智能,被认为是我们这一代最具颠覆性的行业。这些领域的蓬勃发展,正推动着.AI域名的需求与价值不断攀升。最引人注目的交易发生在2023年10月10日,当时域名“you...

变现新途径!视频号“创作分成计划”上线 评论区广告来了

变现新途径!视频号“创作分成计划”上线 评论区广告来了
日前,视频号宣布“创作分成计划”上线,通过评论区广告助力创作者获得收益,再添变现途径。据悉,视频号创作分成计划是基于视频号生态体系,符合一定条件的视频号优质原创作者,可在原创视频评论区通过展示广告内容,获取广告收入的模式。优质原创作者发表视频内容并声明原创,该视频的评论区则有机会向用户智能展示最适合...

pbootcms怎么才能彻底关闭网站后台的在线更新功能?

pbootcms怎么才能彻底关闭网站后台的在线更新功能?
需求描述给客户用pbootcms做的网站,做了很多二开,所以不能让他在线升级。网上搜索了很多方法都是隐藏或者删除在线升级的菜单。假如客户知道在线更新的链接地址,岂不是还可以在线更新?为了以防万一,我们需要做到彻底关闭这个功能。修改方法找到文件/apps/admin/controller/system/UpgradeController.php找到代码private...

pbootcms模板常用php代码 可直接写在模板中

pbootcms模板常用php代码 可直接写在模板中
自用备忘 不做介绍<?php//获取一条定制标签名称为comtype的值,并用|分割循环输出常用于多个微信号码/多个电话等的输出$list=\core\basic\Db::table('ay_label')->field('value')->where("name='comtype'")->find();$list=explode('...

html5登录界面模板下载_css3简洁登录界面模板下载

html5登录界面模板下载_css3简洁登录界面模板下载
html5登陆框,html5 login...

HTML5在线教育培训课程网站模板

HTML5在线教育培训课程网站模板
查看演示 下载源码HTML5,教育培训,网络教育HTML5在线教育培训课程网站模板是一款适合从事网络教育服务行业HTML5网站模板下载。提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢。...

pbootcms使用sql标签实现统计网站留言总数

pbootcms使用sql标签实现统计网站留言总数
pbootcms V3.2.4版本已经不再支持该标签,此代码对pbootcms V3.2.4以上的版本无效。仍需要使用此标签的朋友,可以把/apps/home/controller/ParserController.php文件中的parserSqlListLabel函数相关代码注释去掉即可继续使用。直接上代码,前台模板中使用如下代码:{pboot@sqlsql="selectcount(id)a...

日历界面布局设计,时间日历桌面模板

日历界面布局设计,时间日历桌面模板
这是一款日历界面布局设计,时间日历桌面模板,该模板包含日历、星期、时间插件,界面简约大气,100%响应,希望大家能够喜欢。...

HTML5个人简历作品展示网页模板

HTML5个人简历作品展示网页模板
HTML5个人简历作品展示网页模板是一款适合个人简历作品展示网页模板下载。提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢。点我查看演示点我下载...

备案掉了,网站排名骤然跌落?最佳解决方案

备案掉了,网站排名骤然跌落?最佳解决方案
这两年网站备案监管越来越苛刻,老贺在大年二十八还收到老客户发的消息,说是阿里云要求网站立即进行内容整改,否则会被取消备案接入。真是一个不留神备案就掉了,此类型的例子太多太多,一个不留神,备案掉了,接下来如果得不到正确的处理,网站排名必然是暴跌的!那么如果网站的备案掉了,要如何面对这种问题呢,什么样的...
返回顶部