Intereting Posts
Как подключиться к действиям администратора javascript / ajax? та же роль пользователя или копировать роль пользователя, чтобы быть такой же, как и другая роль Дублирующий класс атрибута, вызывающий ошибку проверки сайта Штрих-код для серии файлов изображений, исключающих диапазон? Пользовательская <blockquote> HTML-разметка Преднамеренно превышать max_num_pages по основному запросу без получения 404? Добавить значок 32×32 на страницу пользовательского типа почтового индекса Открыть график на странице сообщений Исключить категорию из категории Организуйте загрузки по годам, месяцам и дням getExcerpt: Сделать эллипсис, только если предел персонажа достигнут WordPress больше не поддерживает форматирование почты Как получить вложения в menu_order в WordPress? Переименование компонентов моей учетной записи Woocommerce Проблема с заданием типа авторезистентной почты

удалять пункты меню, если пользователь не может читать

Я хочу создать одно меню для всех пользователей, а затем скрыть / удалить элементы из меню, если у них нет доступа к странице, к которой ведет ссылка. Это для меня похоже на СОП. Я действительно не понимаю, как это не является основной функциональностью. Я не могу быть первым, кто захочет или подумает над такой идеей. так или иначе

вот что я до сих пор, я просто не уверен, как и где получить идентификатор сообщения от

add_filter( 'wp_nav_menu_items', 'rm_menu_items', 10, 2 ); function rm_menu_items( $items, $args ) { foreach($items as $key=>$item){ if (!current_user_can('read', $post_id)){ unset($items[$key]); } } return $items; } 

Это было задано здесь пару лет назад.

Отображать пункт меню навигации на основе пользовательских возможностей

Там есть несколько вариантов, которые будут работать.

Если вы используете фильтр 'wp_nav_menu_objects' , вы получаете список пунктов меню до того, как Walker обработает их. Каждый элемент меню представляет собой объект WP_Post с некоторыми добавленными свойствами меню. Свойством ID является идентификатор сообщения.

 add_filter( 'wp_nav_menu_objects', 'rm_menu_items', 10, 2 ); function rm_menu_items( $menu_items, $args ) { $allowed_menu_items = array(); foreach ( $menu_items as $menu_item ) { if ( current_user_can( 'read', $menu_item->ID ) ) $allowed_menu_items[] = $menu_item; } return $allowed_menu_items; } 

Вы можете увидеть более подробную информацию о пунктах меню здесь