web関連

【wordpress】1つのサブループで複数のタームを出力する方法

2019/12/04

2019/12/13

【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()での書き方参考にしたんだけど…

 

関数にするかどうか迷った