カスタム投稿タイプを利用したコンテンツから特定のカスタム分類の内容をサブクエリを用いて表示させる方法です。
query_postsの引数「tax_query」でゴチャゴチャやってたのですが、うまく行かなかったので、シンプルに書いたら行けました。
ということで備忘録としてまとめます。
「functions.php」への記述
カスタム投稿タイプを利用するために、下記の内容を「functions.php」に追記します。
add_action('init', 'register_post_type_and_taxonomy'); function register_post_type_and_taxonomy() { register_post_type( 'sample', array( 'labels' => array( 'name' => 'サンプル例', 'add_new_item' => 'サンプル例を追加', 'edit_item' => 'サンプル例の編集', ), 'public' => true, 'supports' => array( 'title', 'editor', ), ) ); register_taxonomy( 'grouping', 'sample', array( 'labels' => array( 'name' => '分類', //'add_new_item' => '分類を追加', 'edit_item' => '分類の編集', ), 'hierarchical' => true, 'show_admin_column' => true, ) ); }
特定のカスタム分類のカスタム投稿のみ取得する
query_postsを使って、次のパラメータを指定して取得しています。ちなみにループ内の処理は別ファイル「content-sample.php」を読み込んで行っています。
<?php query_posts( array( 'post_type' =>'sample', 'taxonomy'=> 'grouping', 'term'=> 'sample-a', 'posts_per_page' => 10, 'order' => 'ASC', )); if (have_posts()) : while (have_posts()) : the_post(); get_template_part('content-sample'); endwhile; endif; wp_reset_query(); ?>
もう少し複雑な条件で抽出する場合は、tax_queryを使った方が単純だろうから覚えないとな〜