サポート » テーマ » カスタム分類(スラッグ名)を条件分岐に使い、テンプレート変更させて

  • 解決済 Nana

    (@welina_nana)


    調べに調べて、色々試してみたのですが解決の糸口が見えてこないため
    質問させていただきました。

    まず現在の構造からご説明します。
    ————-
    [ カスタム分類構造 ]
    custompost001(カスタム投稿タイプ)
    – itemtype001(親)
    — itemtype001-1(子)

    [ taxonomy.php ]カスタム投稿表示用テンプレ

    $term_var = get_query_var( 'term' ); //まずスラッグを取得
    
    <?php
     if ( preg_match('/itemtype001/', $term_var ) | preg_match('/itemtype001-1/', $term_var )): ?>
      <?php include ( TEMPLATEPATH . 'item_type01.php' ); ?>
      <?php endif; ?>

    上記のような形で各アイテム毎のテンプレをインクルードして、taxonomy.php上でリスト表示させています。

    ————-

    解決したい問題
    ————-
    カスタム投稿(アイテム)を編集し『変更をプレビュー』を押すと、
    どうも$tarm_varが空になっているようで、プレビュー上でテンプレのインクルードが行われません。

    プレビューではget_query_varによる各情報の取得はできないのでしょうか?
    わかりづらい説明になって申し訳ありませんが、何か方法をご存知の方
    もしよろしければ教えていただけると助かります。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • モデレーター jim912

    (@jim912)

    Nanaさん、こんにちは。

    プレビューで表示されるのは、カスタム投稿タイプの個別ページなので、taxonomy.php自体が呼ばれる事がないように思われますが、どういったことでしょう??

    トピック投稿者 Nana

    (@welina_nana)

    jim912さん、ご返信ありがとうございます。
    記載が足りていませんでした・・・すみません。

    プレビューにはとりあえずsingle-custompost001.php
    を用意し、それで表示しようと考えています。

    なのでtaxonomy.phpとsingle-custompost001.phpが
    イコールと解釈していただければと思います。

    taxonomy.php
    問題なく$term_varに代入されていて、分岐も行われている

    single-custom001.php(プレビュー用でtaxonomy.phpと同内容)
    $term_varが空となる

    これでご理解していただけましたでしょうか?

    トピック投稿者 Nana

    (@welina_nana)

    なんだかんだで自己解決することができました。
    質問もわかりづらくてすみませんでした。

    taxonomy.phpがあっても、結局はsingle-custom001.phpが優先されるので
    プレビューもフロントもsingle-custom001.phpが表示されますしね^^;

    下記が解決後のsingle-custom001.php内記載のサンプルコードです。
    条件分岐に使う変数定義部分

    $taxonomy_var = get_post_taxonomies($post->id); // ターム取得のためのタクソノミ
    $terms_array = get_the_terms($post->id, $taxonomy_var); // スラグ取得のためのターム配列
    $slug_var = $terms_array[0]->slug; // 配列からスラグ取得

    変数使って条件分岐してインクルード

    <?php if ( preg_match('/itemtype001-1/', $slug_var )): ?>
    <?php include ( TEMPLATEPATH . '/item_type01.php' ); // or get_template_part() ?>
    <?php endif; ?>

    上記のコードで問題なくプレビューでも”スラグ”や”タクソノミ”その他で
    条件分岐できるようになりました。
    スラグとかタクソノミとかタームとか、未だに区別がつかないです・・・。
    こんなソースで参考になれば幸いです。
    ※includeは諸事情により使っています。get_template_part()でも可。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「カスタム分類(スラッグ名)を条件分岐に使い、テンプレート変更させて」には新たに返信することはできません。