質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

3回答

1776閲覧

WordPressでタクソノミーのタームごとに記事一覧のページを作成したい

yytop

総合スコア20

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2021/08/31 08:30

編集2022/01/12 10:55

WPでタクソノミーのタームごとに記事一覧のページを作成したいと考えています。

URLは下記のように設定しています。

https://example.com/タクソノミー名/タームスラッグ/

下記のようにファイルを作成してテーマ内にアップしていますが、記事が表示されません。

taxonomy-(タクソノミー名).php

PHP

1<?php if( have_posts() ):while( have_posts() ):the_post(); ?> 2 3(ループさせたい記事のソース) 4 5<?php endwhile; endif;wp_reset_postdata(); ?>

パーマリンクは投稿名にしてあります。

以前はこれで問題なく表示出来ていたように思うのですが、詳しい方、ヒントだけでもいただけると助かります。m(_ _)m

<補足1>
taxonomy-(タクソノミー名)-(ターム名).php
という個別にターム名を指定したファイルをターム数分作成すればできそうですが、ターム数が約30個あるので、
taxonomy-(タクソノミー名).php
だけで解決したいところであります。。

<補足2>
下記のような書き方もありますが、この場合タームスラッグをズバリ指定してあげないと、すべての記事を表示してしまいます。。

PHP

1<?php 2$custom_posts = get_posts(array( 3 'post_type' => 'カスタム投稿タイプスラッグ', // 投稿タイプ 4 'posts_per_page' => -1, // 表示件数 5 'tax_query' => array( 6 array( 7 'taxonomy' => 'タクソノミースラッグ', //タクソノミーを指定 8 'field' => 'slug', //ターム名をスラッグで指定する 9 'terms' => 'タームスラッグ', //表示したいタームをスラッグで指定 10 ), 11 ) 12)); 13global $post; 14if($custom_posts): foreach($custom_posts as $post): setup_postdata($post); ?> 15 16(ループさせたい記事のソース) 17 18<?php endforeach; wp_reset_postdata(); endif; ?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2021/09/01 05:36

表示に他のテンプレートではなく「taxonomy-(タクソノミー名).php」が使われている状態でしょうか。
yytop

2021/09/01 05:52

はい、「taxonomy-(タクソノミー名).php」が使われている状態であることは間違いないです。 しかしURL内にタームスラッグを指定しているのに、該当の記事が一覧されず真っ白になります。。
yytop

2021/09/01 07:58

ありがとうございます。 デバッグモードにしてみましたが、エラーは出ませんでした。 デベロッパーツールにもエラーは出ていませんでした。
guest

回答3

0

ということは、ほかの方も書かれていますがループを上書きしているかもしれませんね。
ヘッダやサイドバーなどで別のループを使っていませんか?
もしくはfunctions.php内で投稿の抽出条件を設定していて、その設定に間違いはないでしょうか。

心当たりがなければ、taxonomy-(タクソノミー名).phpの先頭に下のコードを入れてみてください。
現在の抽出条件が表示されます。

php

1<pre> 2<?php var_dump($wp_query->query_vars); ?> 3</pre>

設定したつもりのない条件が入っていれば、それを設定している場所を探して修正してみてください。
(posts_per_pageが0になっている等)

投稿2021/09/11 01:55

warajies

総合スコア82

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yytop

2021/09/11 02:27

他のループをすべて外した形で確認済みですが、解決しませんでした。。 var_dump()での確認はまたやっていませんでした、ありがとうございます! 関係ありそうなところを確認しまして、条件は合っているようなのですが、やはり該当記事を抽出してくれません。。 ["online_cat"]=> string(10) "2021summer" ["posts_per_page"]=> int(20) ["taxonomy"]=> string(10) "online_cat" ["term"]=> string(10) "2021summer"
warajies

2021/09/11 02:50

var_dump($wp_query->posts)だとどうでしょうか。 また、それをtaxonomy-(タクソノミー名).phpの先頭に入れた場合と、header.phpのbodyダグ直後に入れた場合で取得できるデータに変化はありますか? もし変化があれば、その途中のどこかでクエリを書き換えているということになります。 2つが同じならWordpress全体的な設定かfunctions.phpでの記述が怪しいということになるかと思います。
yytop

2021/09/11 06:34

ありがとうございます。 var_dump($wp_query->posts)をtaxonomy-(タクソノミー名).phpの先頭に入れた場合と、header.phpのbodyダグ直後に入れた場合で取得できるデータを比較したのですが、まったく同じ文字列で変化は見られませんでした。。 functions.php には大したこと書き込んでいないので、試しに一旦削除してみましたが、結果は同じでした。 以前他の方にいただいたアドバイスで、WPのデフォルトテーマ「twentytwentyone」でも表示出来なかったので、いよいよWPの全体的な設定の問題でしょうかね、、うーん。。
guest

0

原因切り分けのために、(ループさせたい記事のソース)の部分に「test」のような単純なテキストを入れてみてください。
記事数分の「test」の文字は表示されますか?

■表示される → (ループさせたい記事のソース)に記述間違いがある

■表示されない → 投稿の取得ができていない

投稿2021/09/10 23:42

warajies

総合スコア82

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yytop

2021/09/11 01:03

ありがとうございます。試しにループ内に「test」と入れたみましたが、何も表示されませんでした。 まったく投稿の取得が出来ていないようです。
guest

0

直接の回答ではありませんが、実際に呼ばれているテンプレートファイルを確認してみてください。

【【開発者必須】Query Monitor の使い方(おすすめWordPressプラグイン) | push.tokyo】
https://push.tokyo/query-monitor/

【Query Monitor:様々な情報を一括でモニタリングできる | WordPress活用術】
https://www.hiskip.com/wp/plugin/developers/7923.html


通常のループが動かない場合、下記のようなことが原因になることがあります。
0. $posts $wp_query などの変数が上書きされている
0. query_postsを使用している

テンプレートの記述を最小限にして(ヘッダやサイドバーなどを読み込まず)試してみたりしてください。


一般的な原因特定フローは、下記の通りです。
0. DB/ファイル全てのバックアップをする
0. デバッグモードにする ⇒ http://mignonstyle.com/debug-mode/
0. プラグイン/テーマ/本体全てをアップデートする
0. デフォルトテーマで再現するか確認する
0. プラグインを全て止めて再現するか確認する
0. 構成するシステムファイル群をFTPで最新のものに上書きする

投稿2021/09/01 08:18

kei344

総合スコア69366

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yytop

2021/09/01 12:48

詳しく教えていただき、ありがとうございます。 ・Query Monitorプラグインを入れてみました。  テンプレートは「taxonomy-(タクソノミー名).php」が使われていますし、PHPエラーも出ていませんでした。  「重複クエリー」 が1件表示されていましたが、  呼び出し元:WP_Query->get_posts() プラグイン: query-monitor 1件のコール / コア:1件のコール  となっていたので、関係ないかと思います。 ・WP非推奨の「query_posts」は使用していません。 ・テンプレートの記述を最小限にするために、ヘッダ・フッターを外してみましたが、表示されませんでした。 ・一般的な原因特定フローの1~3までやりましたが表示されず、4~6についてはテスト環境を作って試してみたいと思います。 取り急ぎ、現状ご報告まで、よろしくお願いいたします。
yytop

2021/09/04 06:38

遅くなってすみません、テスト環境を作って、残りの分を試してみました。 4. Twenty Twenty-oneテーマに「taxonomy-(タクソノミー名).php」を入れて試してみましたが、何も表示されませんでした。 5. カスタム投稿用プラグイン(Custom Post Type UI)以外は止めてみましたが、表示されませんでした。 6. 構成するシステムファイル群だけでなく、全ファイルFTPで最新のものに上書きしましたが変わりませんでした。 というわけで迷宮入りしてきましたが、他のループの書き方出来ないのか探っています。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問