• 解決済 ummo3

    (@ummo3)


    過去の質問にもたくさんでていたので、参考にしながら進めていましたが
    どうしても出来ないので、質問させてください。

    下記のような一般的なページになっています。
    A (親ページ)
    ・A-1 (子ページ)
    ・A-2 (子ページ)
    ・A-3 (子ページ)
    B (親ページ)
    ・B-1 (子ページ)
    ・B-2 (子ページ)
    ・B-3 (子ページ)

    そしてAグループにはA用サイドバー(各子ページ)
    そしてBグループにはB用サイドバー(各子ページ)を
    表示したいです。

    (1) 外観 >メニューでサイドバー用のAグループとBグループを作成
    (2) sidebar-a.php、sidebar-b.phpを作成
    ファイルは
    <?php wp_nav_menu(
    array(
    ‘container’ => ”,
    ‘menu_class’ => ‘subnavi’,
    ‘theme_location’ => ‘a’ ←Bグループはここがb
    ) ); ?>
    みたいな感じで書いています。

    (3) そして早速page.phpに条件分岐を作成したいのですが
    下記を参考にして
    http://hibikio-bayec.blogspot.jp/2011/09/wordpress_09.html

    <?php
    if( is_page(‘A’) || $post->post_parent == ‘0’ ) {
     get_sidebar(‘A’);}
    elseif( is_page(‘B’) || $post->post_parent == ‘0’ ) {
    get_sidebar’B’);}
    else {
    get_sidebar();
    }
    ?>

    しかし、子ページには何も表示されません。
    下記のページを見て、最上位のページは0と書いてあったのでIDを0にしましたが
    意味が違うのでしょうか?
    http://ja.forums.wordpress.org/topic/1056?replies=10

    phpがよく分かっていないので記述が変だと思いますが
    よろしくお願いします。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック投稿者 ummo3

    (@ummo3)

    色々とやってみたところ、
    sidebar-a.php、sidebar-b.phpと分けずに
    sidebar.phpの中に下記を書いたら何とかできました。
    <?php
    if ( is_page( ‘A’ ) || is_page( ‘A-1’ ) || is_page( ‘A-2’ ) || is_page( ‘A-3’ ) ) {
    wp_nav_menu(
    array(
    ‘container’ => ”,
    ‘menu_class’ => ‘nav’,
    ‘theme_location’ => ‘A’
    ) );
    } elseif ( is_page( ‘B’ ) || is_page( ‘B-1’ ) || is_page( ‘B-2’ ) || is_page( ‘B-3’ ) ) {
    wp_nav_menu(
    array(
    ‘container’ => ”,
    ‘menu_class’ => ‘nav’,
    ‘theme_location’ => ‘B’
    ) );
    }?>

    しかし…
    例えばサイドバーの内容を追加する場合、
    Wordpressのメニューだけでなく、sidebar.phpも修正しなくてはいけないですし
    恐らくこれは効率の悪い作り方をしていると思います…

    どうすれば良いか、もしアドバイスがあればよろしくお願いします。

    これは分岐の記述方法だけをちゃんとやってやれば問題ありません。

    http://wpdocs.sourceforge.jp/%E6%9D%A1%E4%BB%B6%E5%88%86%E5%B2%90%E3%82%BF%E3%82%B0#WordPress_.E3.83.9A.E3.83.BC.E3.82.B8

    こちらの2.11 WordPress ページ
    スニペット3 及び 4がほとんどズバリのものになります

    トピック投稿者 ummo3

    (@ummo3)

    jdbb様 回答ありがとうございます。
    スニペット3を試してみました。

    if ( is_page( ‘A’ ) || ‘2’ == $post->post_parent ) {
    wp_nav_menu(
    array(
    ‘container’ => ”,
    ‘menu_class’ => ‘nav’,
    ‘theme_location’ => ‘A’
    ) );
    } elseif ( is_page( ‘B’ ) || ‘2’ == $post->post_parent ) {
    wp_nav_menu(
    array(
    ‘container’ => ”,
    ‘menu_class’ => ‘nav’,
    ‘theme_location’ => ‘B’
    ) );
    } else {
    //後で書きます。
    }

    親ページはサイドバーが表示できましたが、子ページは表示できません。
    if ( is_page( ‘A’ ) || ‘2’ == $post->post_parent ) は
    “A”および”A”の子は下記の指示、という意味かと思ったのですが
    この認識は間違っていますか?;;

    すみません、よろしくお願いします。

    その数字は 固定ページのIDになり
    親の固定ページのID をその 2 の部分に入れてやる必要があります。
    IDはその固定ページの編集画面に入るとそのアドレスが
    「post.php?post=129&action=edit」
    のような感じになっていると思いますがこの場合は 129 がこの固定ページのIDです。

    トピック投稿者 ummo3

    (@ummo3)

    jdbb様!!!!
    回答ありがとうございます。

    jdbb様の言う通りに、IDをちゃんと入れたら
    出来ました!
    どうしてもうまくいかず、昨日から試行錯誤していたので
    正直出来たときは、少し泣いてしまいました….

    本当にありがとうございました。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「各ページのサイドバーについて」には新たに返信することはできません。