Звонить hide
не очень хорошая идея.Это только изменяет видимость элемента, но все равно будет присутствовать в источнике.Если вам абсолютно необходимо сделать это в javascript, позвоните remove
, но этот метод по-прежнему не учитывает тех пользователей, у которых он отключен.
Но, к счастью, вы можете удалить элементыиз меню WordPress путем перехвата перед генерацией HTML:
function filter_remove_menu_item_for_anons($menu_items, $args) {
foreach($menu_items as $k => $item) {
if ($item->ID == 123) {
unset($menu_items[$k]);
}
}
return $menu_items;
}
add_filter('wp_nav_menu_objects', 'filter_remove_menu_item_for_anons', 10, 2);
Просто зарегистрируйте фильтр на основе ваших проверок сеанса.
Если у вас есть несколько меню и вам нужно более точное управление, вы можете сделать дополнительныепроверяет с помощью параметра args .
Однако, если пользователь знает URL, он все равно сможет получить доступ к содержимому, и вам следует рассмотреть другое решение .