サポート » 使い方全般 » 条件分岐について

  • 解決済 roses

    (@roses)


    現在運営中のサイトで、親カテゴリーごとに記事(single.php)の表示を変えるために下記の条件分岐を使っています。

    階層構造

    ・親カテゴリーA(ID:1)
      ├子カテゴリーA-1(ID:2)
      │ └孫カテゴリーa-1(ID:4)
      └子カテゴリーA-2(ID:3)
    ・親カテゴリーB(ID:5)
      ├子カテゴリーB-1(ID:6)
      │ └孫カテゴリーb-1(ID:8)
      └子カテゴリーB-2(ID:7)

    条件分岐

    <?php
    //親カテゴリーAの記事
    if (in_category('1') || in_category('2') || in_category('3') || in_category('4')) { ?>
    親カテゴリーAの記事の表示内容
    
    <?php
    //親カテゴリーBの記事
    } elseif (in_category('5') || in_category('6') || in_category('7') || in_category('8')) { ?>
    親カテゴリーBの記事の表示内容
    
    <?php
    //その他の記事
    } else { ?>
    その他の記事の表示内容
    
    <?php } ?>

    でも、これでは子・孫カテゴリーを増やしたり減らしたりする度にin_category()を追記・削除するので面倒なのです。
    親カテゴリーを指定して分岐させる方法はないでしょうか?
    ※親カテゴリーA、Bともに子・孫カテゴリーは増減します。

    何卒、ご教授よろしくお願いいたします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • 子カテゴリー、孫カテゴリーを投稿するときに親カテゴリーにもチェックを入れているのかいないのかによっても処理が変わってくるような気がしますが、もしチェックを入れているのであればin_category(‘1’)のみの指定で下層カテゴリーが全て含まれるようになりませんか。
    そのような運用が難しいのであればソースを考えなくてはですね・・・

    トピック投稿者 roses

    (@roses)

    shokun0803様

    早速のご返答ありがとうございます。

    親カテゴリーにもチェックを入れているのかいないのかによっても処理が変わってくるような気がしますが

    現在、親カテゴリーにはチェックを入れていません。

    というのも、Dagon Design Sitemap Generatorでサイトマップを作っているのですが、親・子カテゴリーの両方にチェックを入れるとサイトマップに同じ記事タイトルが2つ表示されるようになってしまいややこしくなってしまうのです(汗)

    そのため現状では、親カテゴリー直下には記事は無く、子・孫カテゴリー直下に記事があります。

    モデレーター jim912

    (@jim912)

    rosesさん、こんにちは。

    Aカテゴリーが、Bカテゴリーの祖先にあたるかどうかを返してくれるcat_is_ancestor_ofという関数が使えそうです。

    <?php
    $post_cats = get_the_category();
    if ( $post_cats[0]->cat_ID == 1 || $post_cats[0]->category_parent == 1 || cat_is_ancestor_of( 1, (int)$post_cats[0]->category_parent ) ) { ?>
    親カテゴリーAの記事の表示内容
    <?php } elseif ( $post_cats[0]->cat_ID == 5 || $post_cats[0]->category_parent == 5 || cat_is_ancestor_of( 5, (int)$post_cats[0]->category_parent ) ) { ?>
    親カテゴリーBの記事の表示内容
    <?php } else { ?>
    その他の記事の表示内容
    <?php } ?>

    留意事項&その他

    • 複数カテゴリーにチェックされている記事でも取得できた最初のカテゴリーで判別されます。
    • もう少し記述を少なくすることもできますが、DBへのアクセス回数を減らすため、あえて冗長に書いています。

    おまけ:拙作PS Auto Sitemapもよろしくです。

    トピック投稿者 roses

    (@roses)

    jim912様

    ご回答ありがとうございました。
    早速、ご提示いただいた条件分岐を使わせていただいたところ思い通りの表示ができました。
    ありがとうございました!

    PS Auto Sitemapも試してみます:)

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「条件分岐について」には新たに返信することはできません。