Intereting Posts
Удалить Open Sans из темы Twenty Twelve Как добавить идентификатор страницы в свою постоянную ссылку с помощью WP_Rewrite? Разрешить роли пользователя «продавец» просматривать только роли пользователей «клиент» Набор плагинов для управления пользовательским интерфейсом администратора Как скрыть пользовательское поле от администратора? Силовой язык в функции перевода Заменить содержимое на странице WordPress после GET с php-страницы Как отображать цену продукта в цикле Использовать разные форматы сообщений для разных типов сообщений Удалить пользователей из нескольких пользователей после того, как они не вошли в систему на определенное количество времени? Как искать meta_query LIKE или tax_query LIKE и захватывать эти сообщения в результатах поиска? Пользовательский URL категории не отображается Пользовательский тип сообщения с пользовательской таксономией в бутстрапе 4 Аккордеон Попытка управлять шаблонами в блоге с множеством пользовательских таксономий Правильный способ установки CSS для главной страницы – template_redirect в functions.php?

Переключение полного навигационного меню, если пользователь зарегистрирован

Я пытаюсь условно переключить полное навигационное меню (не навигационные элементы), когда пользователь вошел в систему, но приведенный ниже код меняет все меню.

Меню, в котором я переключаюсь, не имеет тематического местоположения для таргетинга, которое добавляется через wp_nav_menu ().

add_filter( 'wp_nav_menu_args', 'foobar' ); function foobar( $args ) { if ( is_user_logged_in() && $args['menu'] == 'Non-Members Area' ) { $args['menu'] = 'Members Area'; return $args; } } 

Как настроить таргетинг на меню «Не члены»?

Есть пара проблем с исходным кодом. В выражении if $args['menu'] устанавливается в область Non-Members Area (которая затем будет оцениваться как истина). Похоже, вы действительно хотите провести там проверку равенства. Хороший способ избежать этого – использовать условия Йоды .

Кроме того, массив $args всегда должен быть возвращен, поэтому его следует удалить из условного оператора. Вот обновленная версия исходного кода:

 add_filter( 'wp_nav_menu_args', 'foobar' ); function foobar( $args ) { if ( is_user_logged_in() && 'Non-Members Area' === $args['menu'] ) { $args['menu'] = 'Members Area'; } return $args; }