サポート » 使い方全般 » 指定ページ+それ以下の子階層(全子供)で分岐する方法

  • 解決済 goodtimes

    (@goodtimes)


    お世話になります

    あるページまたはそのページの子供たち(1階層下も2階層下も3階層下も・・・とにかく子供全部)だったらヘッダーを変えたいのですが、どうしたらいいのでしょうか?

    codeXの条件分岐タグ内、WordPress ページ -> サブページかどうかをチェックする
    のところを参照しているのですが、
    これだと指定したページ と 指定したページの1階層下の子どもしか反応しません。

    ↓これがサブページかどうかチェックする、という例で提示されているものです

    <?php

    if (is_page(about) || $post->post_parent==”2″) {
    $bannerimg=”home.jpg”;
    } elseif (is_page(learning) || $post->post_parent==”56″) {
    $bannerimg=”teaching.jpg”;
    } elseif (is_page(admissions) || $post->post_parent==”15″) {
    $bannerimg=”admissions.jpg”;
    } else {
    $bannerimg=”home.jpg” ; // 上記以外の場合
    }

    ?>

    で、わたしが思うように実現するために、気になるところは、以下です

    ・指定ページの下には何階層あるかは決まっていない
    ・指定ページの階層も決まっていない(=よってページIDで指定している)

    どなたかご教示いただけませんでしょうか
    よろしくおねがいいたします

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

    (@jim912)

    goodtimesさん、こんにちは。

    get_post_ancestorsで取得した親ページの配列内に指定ページのIDが含まれているかで判断できますよね。

    となると、$ancestorsにget_post_ancestorsで取得した配列を代入していた場合、上記コードの

    $post->post_parent=="**"

    の部分を

    array_search( '**', $ancestors ) !== false

    とすれば、表示中のページが指定ページの子孫にあたるかどうか判別できるはずです。

    モデレーター jim912

    (@jim912)

    すみません、自己レスです。

    真偽値判断なので、array_searchなど使わずにin_arrayで十分でした。反省。

    トピック投稿者 goodtimes

    (@goodtimes)

    jim912さん

    こんにちは
    ご回答ありがとうございます
    返事が随分遅くなってすみません

    get_post_ancestorsで取得した親ページの配列内に指定ページのIDが含まれているかで判断できますよね。

    はい、そうでした!
    できましたです
    ありがとうございます!

    karu96

    (@karu96)

    goodtimesさん

    お世話になります。
    wordpress 初心者です。
    [解決済み]のフォーラムに質問してしまい申し訳ないのですが、
    具体的にはどのようなコードで解決されたのでしょうか?
    私も同じような内容で困っておりました。
    宜しければご教示頂ければと思います。

    karu96

    (@karu96)

    すいませんでした。

    意味が良く分かっておりませんでした。

    $ancestors = get_post_ancestors( $post->ID );

    で自己解決できました。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「指定ページ+それ以下の子階層(全子供)で分岐する方法」には新たに返信することはできません。