打电话
hide
不是个好主意。它只更改项的可见性,但它仍将存在于源中。如果你
绝对地
必须在javascript中完成,调用
remove
,但此方法仍然不适用于禁用它的用户。
但幸运的是,在生成HTML之前,您可以通过挂钩从WordPress菜单中删除元素:
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,他仍然可以访问内容,您应该考虑其他
solution
.