Как вывести пользовательский тип сообщения в metabox? - PullRequest
0 голосов
/ 04 мая 2018


Я создал 2 пользовательских поста в Wordpress. Теперь я хочу создать собственный метабокс в одном из них, чтобы выбрать посты из поста второго пользовательского типа и отобразить его впереди. Я не могу найти, как разобраться в этой проблеме, я пробовал пост с запросом, но ничего не отображалось.

1 Ответ

0 голосов
/ 04 мая 2018

Пожалуйста, проверьте код для создания Metabox с именем Company Address, например, пользовательский тип поста продавца.

Добавлен адрес компании 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 );
...