web関連
【wordpress】1つのサブループで複数のタームを出力する方法
サブループを何度も書くのが嫌だったのでforeachと組み合わせただけのやつ
1つのサブループで複数のタームを出力
foreachで囲んで回すだけ
<?php //ターム名を入れる
$arrayBox = [
'term_1',
'term_2',
'term_3'
];
foreach ($arrayBox as $term) : ?>
<div id="<?php echo $term; ?>">
<?php
$args = array(
'posts_per_page' => 3,
'post_type' => 'カスタム投稿名',
'ignore_sticky_posts' => true,
'tax_query' => array(
array(
'taxonomy' => 'タクソノミー名',
'field' => 'slug',
'terms' => $term
)
)
);
$the_query = new WP_Query($args);
if ( $the_query->have_posts() ) :
while ( $the_query->have_posts() ) : $the_query->the_post();
?>
<!-- ループ内容 -->
<?php endwhile; ?>
<?php else: ?>
現在準備中です
<?php endif; ?>
</div>
<?php endforeach; ?>
都度ターム付きの記事の出力方法調べるのも大変なので一緒にメモ
おまけ:タームを全部出力するとき
get_termsとforeachで配列にタームを入れる
<?php
$args = array(
'orderby' => 'name',
'hide_empty' => false, // 投稿の紐づいていない記事を隠すかどうか
'hierarchical' => false
);
$terms = get_terms( 'タクソノミー名',$args);
foreach ( $terms as $term ){
$arrayBox[]=$term->slug;//タームを配列に入れていく
}
?>
記事に紐づいていないタームも出力できるようにしてる
これですべてのタームを自分で書かないでも出力ができる
おまけのおまけ
最初こういう書き方でやってたらうまくいかなかった
get_terms( 'タクソノミー名','hide_empty=false');
駄目なんかな?
get_posts()での書き方参考にしたんだけど…
関数にするかどうか迷った