Wp_nav_menuを使用してメニューが存在する場合にのみメニューを表示し、それ以外の場合には何も表示しないようにしています。
メニューを削除すると、ページの一覧が表示されます。
私のfunctions.phpファイルは含まれています:
if (function_exists('register_nav_menus')) {
register_nav_menus (
array('main_nav' => 'Main Navigation Menu'));}
Wp_nav_menuを使用してメニューが存在する場合にのみメニューを表示し、それ以外の場合には何も表示しないようにするにはどうすればよいですか。
has_nav_menu()
を使用し、theme_location
ではなくmenu_id
をテストします。
<?php
if ( has_nav_menu( $theme_location ) ) {
// User has assigned menu to this location;
// output it
wp_nav_menu( array(
'theme_location' => $theme_location,
'menu_class' => 'nav',
'container' => ''
) );
}
?>
else
句を追加することで、代替コンテンツを出力できます。
_編集_
$theme_location
をあなたのactualtheme_location
に置き換える必要があります。
<?php
if ( has_nav_menu( 'main_nav' ) ) {
// User has assigned menu to this location;
// output it
wp_nav_menu( array(
'theme_location' => 'main_nav',
'menu_class' => 'nav',
'container' => ''
) );
}
?>
fallback_cb
のwp_nav_menu
引数としてfalseを指定するだけです。何も表示されません - むしろ、wp_nav_menuはfalseを返します(何も出力しません)。
<?php
wp_nav_menu(array(
'theme_location' => $main_nav,
'menu_class' => 'nav',
'container' => '',
'fallback_cb' => false
));
場所を指定せずに最初にメニューを登録するだけです。functions.php
内:
add_action( 'init', 'register_my_menus' );
function register_my_menus() {
register_nav_menus(
array(
'header' => __( 'Header Menu' )
)
);
}
header.php
でメニューを呼び出すときは、 has_nav_menu()
で確認してください。
if ( has_nav_menu( 'header' ) ) {
wp_nav_menu( array( 'theme_location' => 'header' ) );
}
これを読む:
http://codex.wordpress.org/Function_Reference/wp_nav_menu
set 'fallback_cb' => falseなら何も表示されません、これはwp guysによって提案された標準的な方法です。