このエントリーをはてなブックマークに追加 Twitterでツイート なぜ「ホーム」が表示されない?それはメニューがあるからさ!

WordPress 3.0のデフォルトテーマでは、メニュー情報が未登録でもサイトトップへのリンクとして「ホーム」が追加されます。同じことを期待して新規テーマを作成してみのですが、なぜか「ホーム」を表示してくれません。
ソースはこんな感じをfunctions.phpに記述。

function my_page_menu_args( $args ) {
	$args['show_home'] = true;
	return $args;
}
add_filter( 'wp_page_menu_args', 'my_page_menu_args' );

おおざっぱな仕組みとしては、functions.phpでmy_page_menu_args関数をwp_page_menu関数のフィルターとして登録し、header.phpに記述しているwp_nav_menu関数の実行時にフィルター処理される感じです。

さて実際に自作テーマでメニューデータを登録し、何度実行しても「ホーム」は表示されません。フィルター登録したmy_page_menu_args関数自体が呼ばれないようです。なぜかなと思いソースコードを眺めていくと、wp_nav_menu関数の内部では、メニューデータがある場合はwp_nav_menu関数でメニューデータを処理して表示し、メニューデータがない場合はデフォルトでwp_page_menu関数を実行するようになっています。現状の自作テーマではメニューデータを登録しているから、フィルター登録したmy_page_menu_args関数が呼ばれないのは当然の結果だったわけです。

ちょっと悩んじゃって損した気分でありますが、ここは素直にメニューデータとして「ホーム」を登録し、問題は解決!?です。

投稿日:2010年11月19日
  • ※コメントは、スパム対策などのためIPアドレスにて制限しております。
  • ※誹謗や中傷、スパムなど、不適切な内容は公開いたしません。ご了承ください。