回答編集履歴

2 勘違いしてたので修正

yukikp

yukikp score 782

2019/08/01 01:54  投稿

訂正
taxonomy-brandcat.phpのテンプレートファイルを作ったのに、なぜタームごとの記事一覧が取得できないのかという事ですよね。勘違いしていました。
原因は、WordPressがURLから判断して、タクソノミーとタームを考慮し、自動でとってくるメインクエリのデータを捨てて、自分でデータを取ってくるサブクエリを使われているからです。
原因は、
(1)$argsの書き方がまず違います。
```PHP
$args = array(
   'post_type' => $post_type_slug, // 投稿タイプの指定
   $taxonomy_slug => $term_slug , // タクソノミーからタームを指定
   'posts_per_page' => -1, // タームに紐づく投稿を全てを表示
);
```
こんな書き方はどこに書いてあったのでしょうか?
[関数リファレンス/WP Query](https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/WP_Query#.E3.82.BF.E3.82.AF.E3.82.BD.E3.83.8E.E3.83.9F.E3.83.BC.E3.81.AE.E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF)
を見て考えてみてください。
普通に
(2)書き方が正しくても、これでは、URLからタームごとの記事一覧は取得できません。
出来るとするならば、
```PHP
$taxonomy_name = get_query_var('taxonomy');
$term_var = get_query_var( 'term' );
```
で、URLから指定されているタクソノミーとtermを受け取り、上記WP_Queryの書き方に従って書けばできます。
が、WordPressがURLから判断して、タクソノミーとタームを考慮し、データベースから自動的にデータを取ってきてくれる機能があります。なぜそれを使わないのでしょか?
普通にtaxonomy-brandcat.phpに(WP_Query()とか要らないので)
```PHP
if( have_posts() ):while( have_posts() ):the_post();
//(略)
endwhile;endif;wp_reset_postdata();
```
を使って、表示させてみてください。
以下訂正前の文章です。
[タクソノミーテンプレート](http://wpdocs.osdn.jp/%E3%82%BF%E3%82%AF%E3%82%BD%E3%83%8E%E3%83%9F%E3%83%BC%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88)
にもありますが、
> taxonomy-{taxonomy}-{term}.php
こういったテンプレートファイルを作れば後はメインループをまわすだけでよいかと思います。
1 修正

yukikp

yukikp score 782

2019/08/01 01:42  投稿

訂正  
taxonomy-brandcat.phpのテンプレートファイルを作ったのに、なぜタームごとの記事一覧が取得できないのかという事ですよね。勘違いしていました。  
 
原因は、WordPressがURLから判断して、タクソノミーとタームを考慮し、自動でとってくるメインクエリのデータを捨てて、自分でデータを取ってくるサブクエリを使われているからです。  
 
普通に  
```PHP  
if( have_posts() ):while( have_posts() ):the_post();  
//(略)  
endwhile;endif;wp_reset_postdata();  
```  
を使って、表示させてみてください。  
 
 
[タクソノミーテンプレート](http://wpdocs.osdn.jp/%E3%82%BF%E3%82%AF%E3%82%BD%E3%83%8E%E3%83%9F%E3%83%BC%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88)
にもありますが、
> taxonomy-{taxonomy}-{term}.php
こういったテンプレートファイルを作れば後はメインループをまわすだけでよいかと思います。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る