如何在metabox中列出自定义类型的帖子?

时间:2018-05-03 21:06:48

标签: wordpress select custom-post-type meta-boxes


我在Wordpress中创建了2个自定义类型的帖子。现在我在其中一个中创建自定义元变量以从第二个自定义类型的帖子中选择帖子并在前面显示它。我找不到如何弄清楚这个问题,我已经尝试了查询帖子,但没有显示任何内容。

1 个答案:

答案 0 :(得分:5)

请检查代码以创建名为公司地址的Metabox,例如卖家自定义帖子类型。

添加了卖家自定义帖子类型的Meta box公司地址:

/**
 * Meta box company address for seller custom post type added
 */      
function wdbs_add_seller_metaboxes() {
    add_meta_box(
        'wdbs_seller_company_address',
        'Company Address',
        'wdbs_seller_company_address',
        'seller',
        'normal',
        'default'
    );
}
add_action( 'add_meta_boxes', 'wdbs_add_seller_metaboxes' );

Meta box字段公司地址html:

/**
 * Meta box field company address html 
 */
function wdbs_seller_company_address() {
    global $post;
    wp_nonce_field( basename( __FILE__ ), 'seller_fields' );
    $company_address = get_post_meta( $post->ID, 'company_address', true );
    echo '<textarea type="text" name="company_address" class="widefat" rows="6">' . esc_textarea( $company_address )  . '</textarea>';
}

保存卖家元区:

/**
 * SAVE SELLER METAFIELDS
 * Saves values for company address meta field
*/ 
function wdbs_save_seller_meta( $post_id, $post ) {
    // Return if the user doesn't have edit permissions.
    if ( ! current_user_can( 'edit_post', $post_id ) ) {
        return $post_id;
    }
    if ( ! isset( $_POST['company_address'] ) || ! wp_verify_nonce( $_POST['seller_fields'], basename(__FILE__) ) ) {
        return $post_id;
    }
    $seller_meta['company_address'] = esc_textarea( $_POST['company_address'] );

    foreach ( $seller_meta as $key => $value ) :

        if ( 'revision' === $post->post_type ) {
            return;
        }
        if ( get_post_meta( $post_id, $key, false ) ) {
            update_post_meta( $post_id, $key, $value );
        } else {
            add_post_meta( $post_id, $key, $value);
        }
        if ( ! $value ) {
            delete_post_meta( $post_id, $key );
        }
    endforeach;
}
add_action( 'save_post', 'wdbs_save_seller_meta', 1, 2 );