記事一覧を表示させる際に、指定したタクソノミーに一つでも所属していたら表示させる方法です。
tax_queryにすべてのタームを含めていきます。
あわせて読みたい


記事の所属しているタームから、関連する記事を表示させる
今回は、single.phpに、関連する記事(その記事自体は省いたもの)を表示させる方法です。記事の下に表示させることが多いです。その記事が所属するタームから、記事を…
目次
どんな時に使用したのか
まず前提として、複数のタクソノミーとタームが存在します。
- 大まかな業務内容A(タクソノミー1)
- 業務内容詳細A-01
- 業務内容詳細A-02
- 業務内容詳細A-03
- 大まかな業務内容B(タクソノミー2)
- 業務内容詳細B-01
- 業務内容詳細B-02
- 業務内容詳細B-03
- 大まかな業務内容C(タクソノミー3)
- 業務内容詳細C-01
- 業務内容詳細C-02
- 業務内容詳細C-03
コラムページや担当スタッフページ、FAQ(すべてカスタム投稿タイプで作成)などにこのタームが紐づけられています。
もちろん、一つのページに対して複数のタームに所属しています。
- スタッフ01の所属ターム
- 業務内容詳細A-01
- 業務内容詳細C-02
- スタッフ02の所属ターム
- 業務内容詳細A-02
- 業務内容詳細B-01
- スタッフ03の所属ターム
- 業務内容詳細C-02
そしてそれを、大まかな業務内容ごとに、カスタム投稿や固定ページなど任意の場所に表示させたい、という内容でした。
コード
<ul>
<li>
業務内容Aのスタッフ一覧
<?php
$terms = get_terms( 'custom-post-taxonomy' ); // タクソノミー名
$term_ids = wp_list_pluck( $terms, 'term_id' ); // 投稿情報の配列から、所属タームIDを取得し変数に格納
$query = new WP_Query(
array(
'post_type' => 'custom-post', // 投稿タイプ名
'posts_per_page' => 3,
'tax_query' => array(
array(
'taxonomy' => 'custom-post-taxonomy', // タクソノミー名
'field' => 'term_id',
'terms' => $term_ids,
),
),
)
);
?>
<ul>
<?php if ( $query->have_posts() ): while ( $query->have_posts() ) : $query->the_post();?>
<li>
<a href="<?php the_permalink() ?>">
<?php the_title(); ?>
</a>
</li>
<?php endwhile; endif; wp_reset_postdata(); ?>
</ul>
</li>
</ul>
出力結果
wp_list_pluckとは
wp_list_pluck – 配列内のオブジェクトまたは連想配列から特定の値だけを抽出する関数です。
あわせて読みたい
wp_list_pluck
array wp_list_pluck( array $list, mixed $field [ , mixed $index_key = null ] ) 配列内のオブジェクトまたは連想配列から特定の値だけを抽出する。
wp-includes/functions.php で定義されている
function wp_list_pluck( $list, $field, $index_key = null ) {
if ( ! is_array( $list ) ) {
return array();
}
$util = new WP_List_Util( $list );
return $util->pluck( $field, $index_key );
}
その他使用例
投稿情報の配列から投稿タイトルを抽出する。
<?php $titles = wp_list_pluck( $posts, 'post_title' ); ?>
投稿情報の配列から投稿タイトルを抽出し、投稿IDがキーの配列に格納する。
<?php $titles = wp_list_pluck( $posts, 'post_title', 'ID' ); ?>
コメント