• HOME
  • Diary
  • 特定タクソノミーの記事だけ表示されない。

特定タクソノミーの記事だけ表示されない。

コンテンツのWPのところだけどjQueryの箇所とかにぶら下がっている投稿記事がリスト上に表示されていないことは気がついていたけど
ソースを見直してみたら原因が分かったのでメモ

いらない部分は削除した状態で
●修正前

<?php foreach( $categories as $cate ):?>
<?php
$args = array(
	'post_type' => $p_type,
	'post_status'=>'publish',
	'posts_per_page'=> -1,
	'tax_query'=> array( array( 'taxonomy'=> $term, 'field'=>'id', 'terms' => $cate->term_taxonomy_id ) ),
);
$the_query = new WP_Query( $args );
$posts = $the_query->posts;
?>

●修正語

<?php foreach( $categories as $cate ):?>
<?php
$args = array(
	'post_type' => $p_type,
	'post_status'=>'publish',
	'posts_per_page'=> -1,
	'tax_query'=> array( array( 'taxonomy'=> $term, 'field'=>'id', 'terms' => $cate->term_id ) ),
);
$the_query = new WP_Query( $args );
$posts = $the_query->posts;
?>

tax_queryの中の配列の「’terms’ => $cate->term_taxonomy_id」を「’terms’ => $cate->term_id」に変更
print_rで出していたときにidと書いてあったから目についたものをいれたがこれが場所によってはterm_idと数値が異なる。
これが原因で出る記事とでない記事があった。

なんで微妙にちがうの?とおもって調べたら以下。

  • term_id は terms テーブルにあるタームの ID です。
  • taxonomy はタームが入るタクソノミーを示します。
  • term_taxonomy_id はタームとタクソノミーの組み合せのユニークな ID です。

はー、そういう事なんだ・・・。