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

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

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

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


阅读全文
相关推荐

钟表js代码,css时钟样式模板

钟表js代码,css时钟样式模板
一款钟表js代码,css时钟样式模板,该模板利用css+js,拟态化风格设计,指针钟表样式,100%响应。...

HTML5人工智能科技公司网站模板

HTML5人工智能科技公司网站模板
HTML5人工智能科技公司网站模板是一款适合人工智能服务行业网站模板下载。提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢。点我查看演示点我下载...

pbootcms 您访问的页面不存在,请核对后重试

pbootcms 您访问的页面不存在,请核对后重试
请先确认您的程序上传是否完整无误,如果程序上传完整无误,这种情况很大概率是没有配置伪静态规则。程序根目录rewrite文件中有对应的几种伪静态规则,请结合您的服务器或者是虚拟主机环境配置对应的伪静态规则即可。...

pbootcms后台编辑器ueditor自动过滤style内链样式的解决办法

pbootcms后台编辑器ueditor自动过滤style内链样式的解决办法
问题说明:客户在编辑器中添加如下代码<style>.bg{background:lightbule;}</style><divclass="bg">HelloEveryBodyWelcomeToUEditorWorld!</div>客户想通过编辑器添加css代码,改变内容中的样式,但是发现css代码块被自动删除了,保...

pbootcms数据库sqlite转mysql

pbootcms数据库sqlite转mysql
有想自己转换的朋友可以百度下,网上有很详细的教程。但是网上的教程都是通过软件自动转换的,这种转换有个弊端,所有字段类型都是text类型。使用text字段类型有什么缺点大家可以去百度下,这里不做科普了。另外这种软件转换的性能还不如sqlite,不建议使用。...

pbootcms对搜索结果关键字进行标红

pbootcms对搜索结果关键字进行标红
[search:titlemark=1]mark=1即代表将标题中的关键字进行标红...

pbootcms安装后页面空白网站后台也登录不了

pbootcms安装后页面空白网站后台也登录不了
新搬家的网站或者是刚升级版本的网站数据库连接配置文件都没有问题但是一直登录不了后台。前台页面一片空白。有两种可能1,php版本太低,切换php7.0以上的版本试试。2,使用mysql数据库的很大可能是mysql数据库导入不完整,检查数据表是不是完整。...

解决pbootcms文章编辑器复制过来的内容粘贴后图片自动本地化的问题

解决pbootcms文章编辑器复制过来的内容粘贴后图片自动本地化的问题
问题描述从别的网站复制的内容,图片也想使用远程地址,不想让图片本地化。但是pbootcms的编辑器默认会自动将图片进行本地化。解决办法修改文件/core/extend/ueditor/ueditor.config.js找到代码,catchRemoteImageEnable:true将true改为false即可。修改后记得清除下浏览器的缓存。...

pbootcms怎么禁止某些指定的IP访问?

pbootcms怎么禁止某些指定的IP访问?
经常有朋友反应pbootcms网站被恶意提交信息及访问,如果知道对方的IP能不能直接禁止这个IP访问网站呢?其实pbootcms后台已经有这个IP黑名单的功能,我们只需要把需要禁止的IP添加进去即可。...

pbootcms一个网站绑定多个域名,访问不同的域名显示不同的备案号码的方法

pbootcms一个网站绑定多个域名,访问不同的域名显示不同的备案号码的方法
需求描述客户的网站绑定了多个域名,应工信部要求底部应正确显示对应的备案号码。那么我们可以利用pbootcms的if标签来实现访问对应域名显示不同的备案号码。完整代码如下{pboot:if('{pboot:httpurl}'=='http://www.aaa.com')}<ahref="https://beian.miit.gov.cn/">鲁ICP备123456号...
返回顶部