WordPress 3.0.1 のサイドメニュー作成に関して教えてください。


例えば「サービス」のページを見ているときは、その下部ページのメニューのみを表示したいのですが、思いつく方法を教えて頂けないでしょうか。



例1)「サービス」ページを見ているときのサイドメニュー内容
-------------------
●サービス
○サービスA
・サービスAの説明1
・サービスAの説明2
・サービスAの説明3
○サービスB
○サービスC
-------------------

※3階層表示が無理なら2階層表示だけでも構いません。


例2)「会社情報」ページを見ているときのサイドメニュー内容
-------------------
●会社情報
○代表挨拶
○会社概要
○沿革
-------------------

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/11/09 22:52:05
  • 終了:2010/11/16 22:55:02

ベストアンサー

id:rouge_2008 No.1

rouge_2008回答回数594ベストアンサー獲得回数3512010/11/10 05:15:09

ポイント60pt

条件分岐で表示するメニューを指定するのはいかがでしょうか?

※各ページに表示するメニューは、管理画面の「外観」→「メニュー」から作成した物を使用します。

・「sidebar.php」(※「TwentyTen」を使用している場合です。)

(※サービスに属する各ページ用に「sidemenu1」、会社情報に属する各ページ用に「sidemenu2」、その他のページ用に「sidemenu3」でメニューを作成した場合です。)

		<div id="primary" class="widget-area" role="complementary">
			<!-- ここから追加 -->
			<?php if (is_page()) {
				if (is_page('サービス') || is_page('サービスA') || is_page('サービスAの説明1') || is_page('サービスAの説明3') || is_page('サービスB') || is_page('サービスC')) {
					wp_nav_menu( array( 'menu' => 'sidemenu1' ) );
				} elseif (is_page('会社情報' || is_page('代表挨拶') || is_page('会社概要') || is_page('沿革')) {
					wp_nav_menu( array( 'menu' => 'sidemenu2' ) );
				} else {
					// その他のページに表示するメニュー
					wp_nav_menu( array( 'menu' => 'sidemenu3' ) );
				}
			}; ?>
			<!-- ここまで -->
			<ul class="xoxo">


※ページのタイトルではなく、「if (is_page('5') || is_page('7') || is_page('10') ... )」のようにページのidで指定する事も出来ます。

※ページのタイトルで指定する場合は、文字コードUTF-8で保存し直すようにしてください。

※上記はサイドバーの一番上に表示する場合です。ウィジェットを使用している場合(※TwentyTen」のデフォルト状態では使用しています。)で、違う順番で表示したい場合は、「sidebar.php」への追加位置を変更し、さらに管理画面の「外観」→「ウィジェット」で各エリアに表示するウィジェットを変更するといいです。

http://wpdocs.sourceforge.jp/Conditional_Tags#.E3.82.B5.E3.82.A4...


・表示調整の必要がある場合、「style.css」の最後に追加

ul#menu-sidebar1 li, ul#menu-sidebar2 li, ul#menu-sidebar3 li {
	list-style-type: square;
	margin-left: 15px;
}
ul#menu-sidebar1 li ul li, ul#menu-sidebar2 li ul li, ul#menu-sidebar3 li ul li {
	margin-left: 1px;
}
id:kazoo9

ご回答を有り難うございます。

ただ、オリジナルの「sidebar.php」テンプレートに差し込んでも下記のエラーが出てしまったため、

「TwentyTen」に戻して差し込んでみたのですが、それでもエラーが出てしまいました。


エラー内容

Parse error: syntax error, unexpected '{' in C:\xampp\htdocs\wordpress\wp-content\themes\aaa-wp\sidebar.php on line 5


※メニューで「sidemenu1」「sidemenu2」「sidemenu3」は作成してあります。


使い方に間違いがあるのでしょうか。

2010/11/10 16:47:29
  • id:rouge_2008
    ご存知かもしれませんが一応・・・
    「外観」→「メニュー」でメニューを作成する時に、追加したメニューをドラッグ&ドロップで右に少し動かすと2階層目を作る事が出来ます。
    (※同じように右にずらして3階層目を作成できます。)
  • id:kazoo9
    有り難うございます。

    上記のことは存じていたのですが、表示しているページの属性毎にメニュー項目を限定して表示する方法が分からず、
    目標の表現を実現することが出来ませんでした・・・。
  • id:rouge_2008
    お返事が遅くなってすみません。
    条件のうちの一つ「is_page('会社情報'」の閉じ括弧「)」が抜けているのが原因でした。
    以下をお試しください。m(__)m


    <!-- ここから追加 -->
    <?php if (is_page()) {
    if (is_page('サービス') || is_page('サービスA') || is_page('サービスAの説明1') || is_page('サービスAの説明3') || is_page('サービスB') || is_page('サービスC')) {
    wp_nav_menu( array( 'menu' => 'sidemenu1' ) );
    } elseif (is_page('会社情報') || is_page('代表挨拶') || is_page('会社概要') || is_page('沿革')) {
    wp_nav_menu( array( 'menu' => 'sidemenu2' ) );
    } else {
    // その他のページに表示するメニュー
    wp_nav_menu( array( 'menu' => 'sidemenu3' ) );
    }
    }; ?>
    <!-- ここまで -->
  • id:kazoo9
    これは、自分で気づくべきでした。
    お手間を取らせて申し訳ありませんでした。


    それで実行してみたところ・・・。




    出来ました!!!

    前回に引き続き、本当に有り難うございました。
  • id:rouge_2008
    こちらこそうっかりミスでお手数お掛けしてすみません・・・
    解決して良かったです。(^^)

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません