wordpressのcompleteテーマについて教えてください。固定ページ表示のときに左メニューをウィジットから固定ページを設定してます。そのときに該当ページのメニューのみ(1項目)を左サイドメニューに表示させる方法はないでしょうか?

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/04/27 13:36:06
  • 終了:2013/05/04 13:40:03

回答(1件)

id:rouge_2008 No.1

rouge_2008回答回数594ベストアンサー獲得回数3512013/04/28 02:15:15

ポイント100pt

ページ上部のナビゲーションメニュー用とは別に、固定ページのサイドバー用のメニューを作成して、ウィジェットに設定してあることが前提条件になります。
テーマの「functions.php」に次の記述を追加してください。

function replace_to_own_menu($menu) {
	if( is_page( 'ページ名1' ) ) {
		preg_match('!<li[^>]+><a[^>]+>ページ名1</a>\s*<ul[^>]+>\r*\n\s*(?:.+?\r*\n\s*)+?</ul>\r*\n</li>\r*\n!u', $menu, $matches);
		return $matches[0];
	} // 目的の固定ページが2つ以上ある場合は、目的のページ用に次の記述を追加します。
	 elseif( is_page( 'ページ名2' ) ) { 
		preg_match('!<li[^>]+><a[^>]+>ページ名2</a>\s*<ul[^>]+>\r*\n\s*(?:.+?\r*\n\s*)+?</ul>\r*\n</li>\r*\n!u', $menu, $matches);
		return $matches[0];
	} // ここまでで1つのページ用
	// 任意のページ以外ではすべてのメニューを表示する場合に次の行のコメントアウトを解除します。(※メニューを表示しない場合はこのまま。)
	// return $menu;
}
add_filter('wp_nav_menu_メニュースラッグ_items', 'replace_to_own_menu');

※「メニュースラッグ」の箇所は、固定ページ用のウィジェットで指定したメニューのスラッグに置き換えます。
※メニュースラッグは、半角スペースがハイフン「-」に、大文字は小文字になります。(日本語だとエンコードされて長くなりますので、英数字のメニュー名に変更してから試してみてください。)
例えばメニューの名前が「Pages Menu」の場合、「pages-menu」になります。

add_filter('wp_nav_menu_pages-menu_items', 'replace_to_own_menu');

コメントはまだありません

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

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

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

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