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

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

ただいまの
回答率

89.20%

【WordPress】カスタムタクソノミーのターム一覧ページを作りたい

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 2,275

KazukiF

score 12

はじめまして、ワードプレスのカスタムタクソノミーについて質問させてください。
「フルーツ」
というタクソノミーをつくり、その中に
「赤」
「赤」-「りんご」
「赤」-「いちご」
「黄」
「黄」-「みかん」
というような階層化されたタームがある場合、taxnomy.phpを利用して、
http://hogehoge.com/フルーツ/赤/いちご
などのように、各タームの記事一覧を表示しているのですがこのページとは別に、
http://hogehoge.com/フルーツリスト/赤
といった、記事のない、ターム情報だけがリストされたページを作りたいと思うのですが、
そもそも可能でしょうか?

上記の
http://hogehoge.com/フルーツリスト/赤
は、
<ul>
<li><a href="http://hogehoge.com/フルーツリスト/赤/りんご">りんご</a></li>
<li><a href="http://hogehoge.com/フルーツリスト/赤/いちご">いちご</a></li>
</ul>
というページにしたいと考えています。

ポイントとしては、既にあるタクソノミーを流用して、そのタームリストのみを表示させるページを
作りたいのですがカスタム投稿?でつくるのか、固定ページでつくるのか、その方法など、調べていても
たどり着くことができないためお助けいただければ幸いです。

どうぞ宜しくお願い致します。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+2

「http://hogehoge.com/フルーツリスト/赤」だけができればいいのでしょうか?
それとも
「http://hogehoge.com/フルーツリスト/黄」なども必要でしょうか?

私なら、ですが
「http://hogehoge.com/フルーツリスト/赤」であれば、そのURLも再現するなら
「フルーツリスト」という固定ページを作成し、それを親とする「赤」という固定ページを作成します。
「フルーツ」の「赤」に所属するタームのリストを引っ張る固定ページのテンプレートを作成し、「赤」という固定ページの属性のテンプレートでそれをセットします。

同じテンプレートで「赤」とか「黄」とかのページも作りたいときは、
タームリストを引っ張るときのターム名は、スラッグ名を利用したり、カスタムフィールドで指定したものをあてるなどします。(テンプレート内で完全に指定しないようにする)

ただ、ターム名と固定ページの名前が一緒って、不具合が起きるかもしれないという気はします。
「http://hogehoge.com/フルーツリスト/赤リスト」などにする必要があるかもしれません。

URLにこだわらないのであれば、
「http://hogehoge.com/フルーツリスト/?list=赤」などにして、
listをgetして$listにして、「フルーツ」の「$list」に所属するタームのリストを引っ張る固定ページのテンプレートを作成し、「フルーツリスト」という固定ページの属性のテンプレートでそれをセットします。

そうすれば
「http://hogehoge.com/フルーツリスト?list=黄」などもできます。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/06/21 11:02

    ご回答ありがとうございます。理想はURLも/による階層化されたものがよく、なおかつ赤、黄、また、その下のりんごやいちごなども1つのテンプレートで動的に生成できればベストなのですがやはり難しいでしょうか?
    文末のgetを利用してパラメータを取得するというのはなぜか盲点でした!最悪これで解決したいと思いますが、例えば赤の下の「りんご」のページを取得する場合はどういうURLパラメータになりますでしょうか?

    キャンセル

  • 2017/06/21 12:10

    もっといいやり方があるかもしれませんし、
    すでにご存じの情報でしたら、しつこくて申し訳ありませんが、まず、子供の情報の取得の方法から……。

    get_termsを利用して、パラメータのparentに取得したいリストの親のIDを入れることで、直下の子供の情報が取れます。
    ターム名を取得→タームのIDを取得→get_termsで子供の情報を取得
    という流れになります。

    ターム名と固定ページ名が同じものが使えるか?ということは置いておいて、使えるんだとしたら、固定ページ名を利用して、タームの情報を取ればいいのかなと思います。

    ターム名と固定ページ名が同じものが使えないなら、例えば固定ページ名を「ターム名+何か」にして、実際にリストを取得するときは「何か」を外した値を使う、ということを考えています。

    それが無理なら、カスタムフィールドで取得したい子リストの親名を指定します。カスタムフィールドを使うと、カスタムフィールド値をわざわざ入れなければならないのが面倒かなとは思います。

    そして、
    >例えば赤の下の「りんご」のページを取得する場合はどういうURLパラメータになりますでしょうか?
    は、親のターム情報を指定してやるだけですので、パラメータについては階層は関係ないです。
    取得したい子リストの親を?list=「親名」という風に指定します。

    キャンセル

  • 2017/06/26 12:02

    お返事遅くなりましたすみません。
    ご教示いただきありがとうございました!
    いただいた回答にて、およそ実現したいことが達成できました!

    キャンセル

+1

以下をfunctions.phpに追加して、設定->パーマリンク設定で保存すれば良いかと思います。
リストの表示は、terastella様の子ターム取得方法で可能です。

add_rewrite_rule( '^フルーツリスト/([^/]+)/?$','index.php?フルーツ=$matches[1]' , 'top' );

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/06/26 12:01

    遅くなってすみません、ご回答ありがとうございました!
    リライトまで設定できたのですね、とても助かりました。

    キャンセル

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

  • ただいまの回答率 89.20%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる