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

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

ただいまの
回答率

90.33%

  • WordPress

    7677questions

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

wordpressカスタム投稿タイプに紐付くカテゴリーアーカイブ

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 39

mitsuru_cbc

score 13

お世話になります。
wordpressのカスタム投稿タイプを使用した際の、
テンプレートについて質問があります。

以下、やりたいことです。

1.通常の「投稿」にいくつかカテゴリー(例:ctg1/ctg2)を作る。

2.CPT UIを使用し、カスタム投稿タイプ(例:ptypeA)を作る。

3.CPT UIの投稿タイプ設定画面の最下「利用するタクソノミー」で、
「カテゴリー (WP コア)」を選択

これで、ptypeAの投稿にもデフォルトカテゴリーctg1/ctg2を使用することが出来ると思うのですが、

■通常の投稿のカテゴリーctg1のカテゴリーアーカイブページ
・URL:www.hoge.jp/ctg1/

■投稿タイプptypeAの投稿のカテゴリーctg1のアーカイブページ
・URL:www.hoge.jp/ptypeA/ctg1/

としたいとき、上記2つのページで使用するテンプレートを変えるにはどうしたらいいでしょうか。

ちなみに、解決に関係あるかわかりませんが、
archive-ptypeA.php はptypeAの全体まとめページ(www.hoge.jp/ptypeA/)用に使用してしまっています。

例えると、
・野菜ラインナップ(www.hogevege.jp)
├トマト品種一覧(www.hogevege.jp/tomato/)
└ニンジン品種一覧(www.hogevege.jp/carrot/)
・野菜ジュースラインナップ(www.hogevege.jp/juice/)
├トマト味商品一覧(www.hogevege.jp/juice/tomato/)
└ニンジン味商品一覧(www.hogevege.jp/juice/carrot/)
で、2つの「トマト一覧」ページで使用するテンプレートを変えたいです。

上記実現出来る方法(テンプレートのファイル名の付け方?)
ご存じの方、何卒、ご教授お願いします。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 1

checkベストアンサー

+2

同名カテゴリーで、複数テンプレートファイルの切り替えは、基本的にできません。

カテゴリーアーカイブを例にすると

  1. category-{slug}.php
  2. category-{id}.php
  3. category.php
  4. archive.php
  5. index.php

の順で、最初に一致したテンプレートファイルが利用されます。


どうしても表示内容を変更したいのであれば、https://wpdocs.osdn.jp/カテゴリーテンプレート の「カテゴリーによって異なるテキスト」に記載されているように テンプレートファイルの中で、条件分岐して、表示内容を変える必要があります。

たとえば、質問の例に書かれている例を使って、トマトカテゴリーで考えると category-tomato.php の中で、

if( is_post_type_archive('juice') ) {
    get_template_part('tomato', 'juice');
} else {
    get_template_part('tomato', 'main');
}


のように条件分岐して、実際の内容を tomato-main.php と tomato-juice.php に記載する感じになるでしょうか。

条件分岐タグですが、カスタム投稿タイプ is_post_type_archive() で判断できたら良いのですが、テストしていないので不明です。 (できなければ、URL で判断しないとダメかもしれません...)

参考:

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/12/07 15:59 編集

    ありがとうございます!!

    上記参考に、実現することが出来ました!


    下記、ご参考までに。

    ・懸念されていたとおり、 is_post_type_archive() で取得出来なかったので、URLで判断することにしました。

    ・僕のやりかたが悪いのかもですが、例えば上記例で
    野菜ジュースラインナップ www.hogevege.jp/juice/
    で、トマトジュースページへのリンクを取得したかったのですが、
    get_category_link(cat_id)
    だと、 www.hogevege.jp/tomato/ が取得されてしまうので、
    各ジュースへのリンクは各カテゴリーslugを使って記述することにしました。


    上記調整しまして、おかげさまで先に進むことができます。
    ありがとうございました!

    キャンセル

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

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

同じタグがついた質問を見る

  • WordPress

    7677questions

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