web-dev-qa-db-ja.com

Wp_nav_menuでif条件を設定

私は1つの新しいメニューを作成し、私のメニューを表示するためにfooter.phpに以下のコードを追加しました

wp_nav_menu( array('menu' => 'footer-cn', 'menu_id' => 'nav', 'menu_class' => 'ft-nav' ));

現時点ではこのメニュー内にページを追加していないので、footer-cn内に使用可能なページがある場合にメニューを表示する場合に何らかの条件を設定したいと思います。

私はこのような条件を設定したいです。

<?php
    if(){ // Some condition
        wp_nav_menu( array('menu' => 'footer-cn', 'menu_id' => 'nav', 'menu_class' => 'ft-nav' ));
    }
?>

出来ますか?

ありがとう。

enter image description here

1
Mr.Happy

ナビゲーションメニューが空のときに非表示にするには、ここで条件付きを使用する必要はありません。

wp_nav_menu( $args ); を見てください。以下の引数を受け入れます

$defaults = array(
    'theme_location'  => '',
    'menu'            => '',
    'container'       => 'div',
    'container_class' => '',
    'container_id'    => '',
    'menu_class'      => 'menu',
    'menu_id'         => '',
    'echo'            => true,
    'fallback_cb'     => 'wp_page_menu',
    'before'          => '',
    'after'           => '',
    'link_before'     => '',
    'link_after'      => '',
    'items_wrap'      => '<ul id="%1$s" class="%2$s">%3$s</ul>',
    'depth'           => 0,
    'walker'          => ''
);

wp_nav_menu( $defaults );

ここで重要なのは'fallback_cb'です

$ fallback_cb(文字列)(オプション)

メニューが存在しない場合は、使用するフォールバック機能。フォールバックしない場合はfalseに設定します。注:$ argsをカスタム関数に渡します。

デフォルト:wp_page_menu

空のときにメニューを隠すには、単に引数にこれを追加するだけです。

'fallback_cb' => false

だからあなたの終了コードは

wp_nav_menu( array('menu' => 'footer-cn', 'menu_id' => 'nav', 'menu_class' => 'ft-nav',  'fallback_cb' => false));
2
Pieter Goosen