阿里云服务器

今天给大家介绍一个给wordpress自定义文章类型增加字段的方法,方便扩展自定义文章类型功能,

这样在页面可以调用更丰富的内容,比如说产品详情页需要产品编号,产品型号,功能,价格等等!

默认的功能满足不了这个需求,这时候我们就可以用这个方法来完善!

我们接着上次添加wordpress自定义文章类型来举例说明!

产品价格

在functions.php添加自定义分类后面加上如下代码:

add_action( 'add_meta_boxes', 'product_director' );
function product_director() {
    add_meta_box(
        'product_director',
        '产品价格',
        'product_director_meta_box',
        'product',
        'side',
        'low'
    );
}

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
}


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' ) ) {
        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 );

}

要添加更多的字段,可以用同样的方法进行添加。

在模板中的调用代码:

<?php echo get_post_meta( get_the_ID(), '_product_director', true );?>

自定义输入框

<input type="text" id="product_director" name="product_director" value="<?php echo esc_attr( $value ); ?>" placeholder="输入产品简介" >

 

相关阅读: