サポート » テーマ » カテゴリを複数選択している場合のsingle.phpの振り分け方

  • 解決済 ixixix

    (@ixixix)


    お世話になります。

    single.phpに

    <?php
    $post = $wp_query->post;
    if ( in_category(‘category1’) ) {
    include(TEMPLATEPATH.’/single1.php’);
    } elseif ( in_category(‘category2’) ) {
    include(TEMPLATEPATH.’/single2.php’);
    } else {
    include(TEMPLATEPATH.’/single0.php’);
    }
    ?>

    と記述し、単一記事のテンプレートをカテゴリごとに指定しています。

    しかしこれだと、記事に「category1」「category2」両方のカテゴリーを
    選択している場合、single1.phpのテンプレートしか適応されない
    のですが、両方のテンプレートとも表示する事は可能でしょうか?

    つまり、
    http://example.com/category1/postame.php
    http://example.com/category2/postame.php
    どちらの場合でも、single1.phpで表示されてしまうのですが
    それぞれ違うテンプレートで表示したいという事です。

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

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

    (@jim912)

    ixixixさん、こんにちは。

    <?php
    $post = $wp_query->post;
    if ( in_category('category1') ) {
    include(TEMPLATEPATH.'/single1.php');
    }
    if ( in_category('category2') ) {
    include(TEMPLATEPATH.'/single2.php');
    }
    if ( ! in_category('category1') && ! in_category('category2') ) {
    include(TEMPLATEPATH.'/single0.php');
    }
    ?>

    みたいな感じですか?

    こういうことじゃないです?

    // 現在、指定されているカテゴリのカテゴリIDをクエリから取得
    $category_id = get_query_var('cat');
    // カテゴリIDからカテゴリ情報を取得
    $category = get_the_category($category_id);
    
    // カテゴリ名で条件分岐
    if ($category->name == 'category1') {
        include(TEMPLATEPATH.'/single1.php');
    } elseif ($category->name == 'category2') {
        include(TEMPLATEPATH.'/single2.php');
    } else {
        include(TEMPLATEPATH.'/single0.php');
    }
    モデレーター jim912

    (@jim912)

    sigeyamaさん

    single.phpって書いてありますよ?

    トピック投稿者 ixixix

    (@ixixix)

    jim912様
    返信ありがとうございます!
    教えて頂いた方法で試してみましたが、
    結果は同じで
    http://example.com/category1/postame.php
    http://example.com/category2/postame.php
    両ページともsingle1.phpが呼び出されています。
    キャッシュやスペルミスなど何度も確認したのですが…。

    sigeyama様
    返信ありがとうございます。
    こちらも試してみましたが、両ページとも
    single0.phpが呼び出されてしまいました。

    phpがあまり分からず恐縮なのですが、
    もし別の方法を御存知でしたらお教え頂けましたら大変嬉しいです!

    トピック投稿者 ixixix

    (@ixixix)

    jim912様

    すみません、確認が足りなかったのですが、
    教えて頂いた方法でやってみた場合、
    single1.phpのレイアウトの後ろに
    single2.phpのレイアウトが続くという
    状態になっておりました。

    一枚のページに、single1.phpとsingle2.phpが
    順番に読み込まれています。

    http://example.com/category1/postame.php
    http://example.com/category2/postame.php
    ともに、表示状態は同じでした。

    以上補足いたします!

    jim912さん
    すみません、間違えてますね。

    ixixixさん
    パーマリンクの設定で以下の様になっていると思ったのですが、違いますか?

    /%category%/%postname%/

    これなら、以下の修正でカテゴリが取れると思います。

    get_query_var('cat');

    ではなく、

    get_query_var('category_name');

    でした。

    修正したコードは以下です。

    // 現在、指定されているカテゴリ名を取得
    $category_name = get_query_var('category_name');
    
    // カテゴリ名で条件分岐
    if ($category_name == 'category1') {
        include(TEMPLATEPATH.'/single1.php');
    } elseif ($category_name == 'category2') {
        include(TEMPLATEPATH.'/single2.php');
    } else {
        include(TEMPLATEPATH.'/single0.php');
    }

    トピック投稿者 ixixix

    (@ixixix)

    sigeyama様

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

    パーマリンクは、
    /%category%/%postname%/
    としています。

    頂いたコードで、希望通りの表示ができました!
    今後もっと勉強に励んで参ります。
    本当にありがとうございました。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック「カテゴリを複数選択している場合のsingle.phpの振り分け方」には新たに返信することはできません。