Как в wordpress не выводить пункт меню если пользователь не авторизирован?
Скажите как можно сделать так что бы пункт в меню не выводился не авторизированным пользователям моего сайта на вордпресс? Само меню я добавил через стандартный функционал в админки. Внешний вид -> Меню. Мне нужно не выводить только 1 пункт. Нашел плагин который дает возможность скрывать пункты меню, но не хотелось бы его использовать для такой небольшой задачи.
Как вариант использовать плагин: nav-menu-roles
Если хотите без плагина, то в файле functions.php нужно прописать такой код:
function wp_get_nav_menu_object($items, $menu, $args) { if (!empty($items)) { $delete = array(); foreach ($items as $key => $value) { // если пользователь не авторизован if (!is_user_logged_in()) { // если это пункт из моего меню if (in_array($items[$key]->object_id, array(1, 2, 3))) { $delete[] = $key; } } } } // удаляем пункты if (!empty($delete)) { foreach ($delete as $id) { unset($items[$id]); } } return $items; } add_filter('wp_get_nav_menu_items', 'wp_get_nav_menu_object', 10, 3);
В данном кода я удаляю пункты меню с object_id равным 1,2 или 3. Вам нужно выбрать свои ссылки(свои параметры по которым вы будите отличать свою ссылку). Можно так же использовать object_id. Тогда вам нужно просто заменить значения 1,2 и 3 на свои. Посмотреть значение для каждой ссылки можно так:
код из примера выше ..... foreach ($items as $key => $value) { var_dimp($items[$key]); // выведем все данные по выводимым ссылкам ... код из примера выше