サポート » 使い方全般 » タクソノミーアーカイブに何とかしてarchive-{post_type}.phpを適用できる?

  • 解決済モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)


    カスタム投稿タイプとカスタムタクソノミーを使用してサイト構築しています。
    仮に、以下のような構成とします。

    ・商品紹介(カスタム投稿タイプ goods)
     ├ 色(カスタムタクソノミー color)
     └ サイズ(カスタムタクソノミー size)

    現在
    archive-goods.php
    single-goods.php
    を作成していますが、パンくずリストやサイドバーなどで 商品紹介 > 色 のアーカイブに移動した時、当たり前なのですがindex.phpが適用されます。

    [商品紹介 > 色]や[商品紹介 > サイズ]はタクソノミーアーカイブなのでtaxonomy-color.phpやtaxonomy-size.phpが適用されるということは理解してますが、どれもarchive-goods.phpとレイアウトが全く同じなので同じファイルを何枚も作るのが煩わしいのです。

    かといってtaxonomy.php1枚で済ませられるかというと、
    違うカスタム投稿タイプに紐付けてあるタクソノミーのアーカイブはレイアウトが異なるので、一緒することはできません。

    なんとか、taxonomy-{taxonomy}.phpではなく、紐付けてあるカスタム投稿タイプの方のテンプレートarchive-{post_type}.phpを適用させられたらいいなと思うんですが
    そういう、言葉は悪いですがテンプレート階層をねじまげることって可能なんでしょうか?

    ※力技ですが、タクソノミーアーカイブにのURLのさいごに手動で?post_type=goodsってパラメータを付ければarchive-goods.phpが適用されますが、なんかスマートじゃない…。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • 共通部分は get_template_part() で作るという普通の方法じゃだめなんですか?

    モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)

    >pluto1234さん
    最初に考えたのはその方法で、taxonomy-{taxonomy}.phpには
    <?php get_template_part(‘archive’,’goods’); ?>
    の1行だけを書いておけば一応共通化できますね。
    でも、taxonomy-{taxonomy}.phpは同じ投稿タイプに紐付けしてあるタクソノミーの数だけ作らなくてはいけません。(別の投稿タイプに紐付けしてあるタクソノミーは共通化したくない)
    今後タームだけでなく、タクソノミー自体もどんどん追加していく可能性があることを考えると、あまり現実的ではないんですよね・・・

    モデレーター jim912

    (@jim912)

    taxonomy.php に集約して、get_taxonomy()->object_type に goods が含まれていたら、get_template_part で、カスタム投稿タイプのテンプレートを読み込んで、exit では?

    モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)

    なるほど、get_taxonomyで分岐ですかー。
    ちょっと試してみまっす!

    Function Reference/get taxonomy « WordPress Codex

    モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)

    こんな感じでやりたいことが実現できましたー!

    taxonomy.phpの中身

    <?php
    	$tax = get_query_var('taxonomy'); //今見てるアーカイブページのタクソノミー名を取得
    	$getPostType = get_taxonomy( $tax );
    	$postType = $getPostType->object_type[0]; //タクソノミーに紐付いている投稿タイプのスラッグを取得
    	if ( $postType == 'goods' ) {
    		get_template_part( 'archive', 'goods' );
    	} else {
    		get_template_part( 'index' );
    	}

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「タクソノミーアーカイブに何とかしてarchive-{post_type}.phpを適用できる?」には新たに返信することはできません。