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

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

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

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;
}


阅读全文
相关推荐

pbootcms被挂马网站被黑被攻击被篡改快照被劫持怎么办的解决办法

pbootcms被挂马网站被黑被攻击被篡改快照被劫持怎么办的解决办法
近期经常有朋友反应pbootcms网站被挂马被黑被攻击被篡改快照被劫持跳转博彩网站怎么办?经常被黑,处理多次不彻底可联系我们技术人员微信。解决方法思路下面我们通过以下几种方法去分析及解决这个问题。1、如果使用的pbootcms版本比较老,我们可以先清理掉程序中的木马文件,然后进行程序升级,直接升级到官方最新版即可。有...

pbootcms删除程序运行异常提示信息

pbootcms删除程序运行异常提示信息
需求描述网安部门检测出有安全风险判定系统路径信息泄露漏洞(中危)漏洞页面截图修复方法以pbootcms V3.2.5版本为例找到文件/core/basic/Basic.php找到代码publicstaticfunctionexceptionHandler($exception)在代码块中注释掉提示信息并添加代码header("Location:/404.html");exit;让提...

pbootcms按照文章ID排序

pbootcms按照文章ID排序
pbootcms默认模板是按照排序号进行排序的。如果我们想按照ID进行排序怎么修改呢?其实官方代码已经支持多种方式排序,那么怎么才能按照ID来排序呢?下面我们上代码{pboot:list num=10 order='id desc'}desc即是按照id从大到小进行排序。那么如果我们需要从小到大排序要怎么写呢?很简单{pboot:list num=10 order=&#...

pbootcms栏目外链时在新建标签页打开target="_blank"

pbootcms栏目外链时在新建标签页打开target=
需求描述客户的网站导航菜单需要添加几个外链,因非本站链接,所以需要在新窗口打开。pboot:nav代码{pboot:navparent=0}<ahref="[nav:link]"{pboot:if('[nav:outlink]'!='')}target="_blank"{/pboot:if}>[nav:name]</a>{/pboot:nav}...

织梦多行文本自定义字段 支持自动换行

织梦多行文本自定义字段 支持自动换行
利用function=nl2br(@me)让多行文本字段自动换行代码如下:[field:自定义字段名称function=nl2br(@me)/]...

pbootcms 为什么占用空间越来越大?

pbootcms 为什么占用空间越来越大?
问题描述我们在使用pbootcms的程序的时候发现网站占用的空间越来越大,就是不更新任何内容,占用的空间也一直在变。问题解决第一,使用sqlite数据库的朋友可以考虑转换成mysql数据库,sqlite数据库随着数据的增加,数据库会越来越大。第二,使用pbootcms老版本程序的朋友可以考虑升级到新版程序,老版程序没有定期清理缓存的...

HTML5金融服务机构响应式网站模板

HTML5金融服务机构响应式网站模板
查看演示 下载源码HTML5,金融服务,金融理财,响应式模板简介:HTML5金融服务机构响应式网站模板是一款适合从事各种金融服务业务的公司企业网站模板下载。提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢。...

pbootcms自定义多选字段前台怎么循环输出

pbootcms自定义多选字段前台怎么循环输出
示例代码{pboot:checkboxid=*field=*}[checkbox:text]{/pboot:checkbox}控制参数id=* 内容ID号,必填,用于控制需遍历多选的内容,也可使用id={content:id}、id=[list:id]自适应当前内容及列表field=* 字段,必填,用于控制需要遍历的字段,如扩展字段产品特色:ext_cpts标签作用用于依次输出指...

微软和苹果求职量惊人:单职位每天超50人应聘 英特尔仅为12人

微软和苹果求职量惊人:单职位每天超50人应聘 英特尔仅为12人
近日国外某简历制作网站发布了一篇调查报告,称其深入研究了数千个公司在LinkedIn上的招聘信息,并对最具竞争力和最不具竞争力的公司进行了排名。调查结果显示,大型科技公司是美国求职者的首选,单职位每天应聘人数排行前7的全部是大型科技公司。其中Netflix以平均单职位每天84.87份申请位居榜首,其次是亚马逊,平均单职位...

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

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