web-dev-qa-db-ja.com

カスタム投稿タイプ内におすすめ投稿を作成する方法を教えてください。

これは通常の投稿とまったく同じ方法で行いますか。 $ featured_catグローバル変数を使用してそれを引き出します。ここでも同じことをするべきですか?

それとも、関連するカスタム分類法を使用する必要がありますか?それとも、私はそれを考えすぎていますか?分類法には本当にメリットがありますか?

ここで正しいアプローチは何ですか?

3
Amit Erandole

動画の投稿タイプと 「注目の分類法」 「おすすめのカスタムメタ選択ボックス

投稿タイプ:

function c3m_reg_vid_post() {

              $labels = array(
                'name' => _x('Videos', 'post type general name'),
                'singular_name' => _x('Video', 'post type singular name'),
                'add_new' => _x('Add New', 'video'),
                'add_new_item' => __('Add New Video'),
                'edit_item' => __('Edit Video'),
                'new_item' => __('New Video'),
                'view_item' => __('View Video'),
                'search_items' => __('Search Videos'),
                'not_found' =>  __('No videos found'),
                'not_found_in_trash' => __('No videos found in Trash'), 
                'parent_item_colon' => ''
              );
              $args = array(
                'labels' => $labels,
                'public' => true,
                'publicly_queryable' => true,
                'show_ui' => true, 
                'query_var' => true,
                'show_in_nav_menus' => true,
                'can_export' => true,
                'rewrite' => array('slug' => 'video', 'with_front' => false),
                'capability_type' => 'post',
                'register_meta_box_cb' => 'c3m_video_meta', //This is for our custom meta box
                'hierarchical' => false,
                'menu_position' => 10,
               'taxonomies' => array('featured'),
                'supports' => array('title', 'editor' 'custom-fields')
              ); 
              register_post_type('video', $args );
}

###分類学

考え直して、注目のビデオ投稿にカスタムフィールドを使用して、投稿が注目されるかどうかを選択するためのドロップダウン選択カスタムメタボックスを作成しましょう。

カスタムメタボックスを設定します。

//hook to add a meta box
add_action( 'add_meta_boxes', 'c3m_video_meta' );

function c3m_video_meta() {
    //create a custom meta box
    add_meta_box( 'c3m-meta', 'Featured Video Selector', 'c3m_mbe_function', 'video', 'normal', 'high' );
}

function c3m_mbe_function( $post ) {

    //retrieve the meta data values if they exist
    $c3m_mbe_featured = get_post_meta( $post->ID, '_c3m_mbe_featured', true );

    echo 'Select yes below to make video featured';
    ?>
    <p>Featured: 
    <select name="c3m_mbe_featured">
        <option value="No" <?php selected( $c3m_mbe_featured, 'no' ); ?>>No Way</option>
        <option value="Yes" <?php selected( $c3m_mbe_featured, 'yes' ); ?>>Sure Feature This Video</option>
    </select>
    </p>
    <?php
}

//hook to save the meta box data
add_action( 'save_post', 'c3m_mbe_save_meta' );
function c3m_mbe_save_meta( $post_ID ) {
    global $post;
    if( $post->post_type == "video" ) {
        if ( isset( $_POST ) ) {
            update_post_meta( $post_ID, '_c3m_mbe_featured', strip_tags( $_POST['c3m_mbe_featured'] ) );
        }
    }
}

}

これが、作成したばかりのクールな機能を備えたビデオ投稿セレクタです。 enter image description here

今注目のビデオ投稿をクエリしてみましょう:

$args = array(
    'post_type' => 'video',
    'meta_query' => array(
        array(
            'key' => 'c3m_mbe_featured',
            'value' => 'yes',
            'compare' => 'NOT LIKE'
        )
    )
 );
$query = new WP_Query( $args );
2
Chris_O

他のすべての投稿タイプと同じように、実際には...カテゴリを使用するか、または他の方法(タグ、カスタム分類法、カスタムメタデータ/フィールドなど)を使用します。

0
wyrfel