Вам нужно указать местоположение меню, которое вы хотите изменить, иначе оно будет работать везде, где wp_nav_menu_args
запущено.Для этого просто оберните код в оператор if
, проверяя наличие установленного theme_location
.
В зависимости от вашей темы, название местоположения может измениться, поэтому подтвердите это;Обычно это будет что-то вроде primary
.
function my_wp_nav_menu_args( $args = '' ) {
if( $args['theme_location'] == 'primary' ){
if( is_user_logged_in() ) {
$args['menu'] = 'logged-in';
} else {
$args['menu'] = 'logged-out';
}
}
return $args;
}
add_filter( 'wp_nav_menu_args', 'my_wp_nav_menu_args' );
Ниже я сделал вашу функцию более лаконичной, но она выполняет то же самое:
add_filter( 'wp_nav_menu_args', 'logged_in_out_menu' );
function logged_in_out_menu( $args ){
if( $args['theme_location'] == 'primary' ){
// Only run this modification on the `primary` nave menu
$args['menu'] = is_user_logged_in() ? 'logged-in' : 'logged-out';
}
return $args;
}