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

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

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

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

PHP

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

Q&A

解決済

2回答

3350閲覧

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

KazukiF

総合スコア12

WordPress

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

PHP

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

0グッド

1クリップ

投稿2017/06/20 08:31

編集2017/06/20 08:35

はじめまして、ワードプレスのカスタムタクソノミーについて質問させてください。
「フルーツ」
というタクソノミーをつくり、その中に
「赤」
「赤」-「りんご」
「赤」-「いちご」
「黄」
「黄」-「みかん」
というような階層化されたタームがある場合、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> というページにしたいと考えています。

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

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

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

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

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

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

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

guest

回答2

0

ベストアンサー

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 01:27

編集2017/06/21 01:30
terastella

総合スコア96

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

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

KazukiF

2017/06/21 02:02

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

2017/06/21 03:10

もっといいやり方があるかもしれませんし、 すでにご存じの情報でしたら、しつこくて申し訳ありませんが、まず、子供の情報の取得の方法から……。 get_termsを利用して、パラメータのparentに取得したいリストの親のIDを入れることで、直下の子供の情報が取れます。 ターム名を取得→タームのIDを取得→get_termsで子供の情報を取得 という流れになります。 ターム名と固定ページ名が同じものが使えるか?ということは置いておいて、使えるんだとしたら、固定ページ名を利用して、タームの情報を取ればいいのかなと思います。 ターム名と固定ページ名が同じものが使えないなら、例えば固定ページ名を「ターム名+何か」にして、実際にリストを取得するときは「何か」を外した値を使う、ということを考えています。 それが無理なら、カスタムフィールドで取得したい子リストの親名を指定します。カスタムフィールドを使うと、カスタムフィールド値をわざわざ入れなければならないのが面倒かなとは思います。 そして、 >例えば赤の下の「りんご」のページを取得する場合はどういうURLパラメータになりますでしょうか? は、親のターム情報を指定してやるだけですので、パラメータについては階層は関係ないです。 取得したい子リストの親を?list=「親名」という風に指定します。
KazukiF

2017/06/26 03:02

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

0

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

PHP

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

投稿2017/06/23 04:12

madone99

総合スコア1855

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

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

KazukiF

2017/06/26 03:01

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問