• 解決済 goodtimes

    (@goodtimes)


    こんにちは、お世話になります
    現在表示されているページの階層が最下位であるということを知るにはどうしたらいいのでしょうか?

    具体的になにがしたいかといいますと、
    まず、現状から書きます

    現在、MAX6階層目まであるページ構成なのですが、
    1.headerにナビボタン(1階層目のページ一覧)を配置しています

    2.sidebarにサブメニュー?(2~5階層目のページ一覧/選択しているページの仲間に限る)を表示しています(ここまでは6階層目以降は非表示)

    3.サブメニューから5階層目のページを選択すると
    headerのナビボタンが6階層目のページ一覧が表示される

    4.ナビボタン(6階層目ページ)をクリックすると、
    ナビボタン(6階層目)は表示のまま

    で、いま1~3はOKです
    4は、ナビボタンが非表示になります
    ※5階層目以降は、選択ページIDの子供一覧を出せと命令しているため当然です

    なので、5階層目以降は、
    現在表示しているページに子ページがありますか?と訊いて

    あれば → ナビボタンに子ページ一覧表示
    なければ → ナビボタンに自分の階層ページ一覧を表示

    としたいのです

    毎回訊いてばかりで申し訳ないのですが、どなたか教えていただけませんでしょうか?
    よろしくお願いします

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • 他にも方法はあると思いますが、表示しているページを親に持つページがあるかどうかを調べ、あれば true を、なければ false を返す関数を作成し、これを利用して場合分けする方法はどうでしょうか。

    function has_child_page( $id='' ) {
        global $wpdb, $post;
        if ( empty( $id ) ) $id = $post->ID;
        $results = $wpdb->get_results( "
            SELECT ID
            FROM   $wpdb->posts
            WHERE  post_type = 'page'
                   AND post_parent = '$id'
                   AND post_status = 'publish';
        " );
        return ( !empty( $results ) ) ? true : false;
    }

    これをお使いのテーマの functions.php に追加し、

    <?php if ( function_exists( 'has_child_page' ) && has_child_page() ) : ?>
    
    <?php else : ?>
    
    <?php endif; ?>

    のように使ってみてください。

    トピック投稿者 goodtimes

    (@goodtimes)

    mizubeさん こんにちは
    ご回答ありがとうございます

    function.phpに貼り付けたのですが
    エラーが出てしまうんです
    貼り付ける場所とか関係ありますか??

    エラーは

    Parse error: syntax error, unexpected T_VARIABLE, expecting T_PAAMAYIM_NEKUDOTAYIM in /home/sites/lolipop.jp/users/ciao.jp-unisonet/web/wp-content/themes/Cheese/functions.php on line 84

    貼り付けた場所は

    add_action(‘wp_head’, ‘kubrick_head’);
    function kubrick_header_image() {
    return apply_filters(‘kubrick_header_image’, get_option(‘kubrick_header_image’));
    }

    ~(いろいろ元々のファンクションが書かれている
    ************************************
    → ここにmizubeさんのファンクションをコピペしました
    ************************************
    add_action(‘admin_menu’, ‘kubrick_add_theme_page’);

    トピック投稿者 goodtimes

    (@goodtimes)

    すみません、追記です

    ちなみにエラーmsgでon line***に該当する箇所は

    if ( empty( $id ) ) $id = $post->ID;

    です

    トピック投稿者 goodtimes

    (@goodtimes)

    mizubeさん ごめんなさい!
    なんどもなんども

    解決しました
    empty( $id ) に全角スペースが入ってました
    すみません、お騒がせしました

    ありがとうございました
    キレイに思ったとおりに動いてくれました!
    感謝ですありがとうございます!

    投稿時にコードを整形した際にうっかり全角スペースを使ってしまったみたいです。
    こちらこそごめんなさい!

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「自分が最下位ページだと知る方法」には新たに返信することはできません。