我想为所有用户创建一个菜单,如果他们无法访问链接指向的页面,则从菜单中隐藏/删除项目。对我来说,这似乎是一个SOP。我真的不明白这为什么不是一个核心功能。我不可能是第一个想要或想到这样一个想法的人。无论如何
这是我到目前为止所拥有的,我只是不知道如何或从哪里获得帖子id
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;
}
SO网友:Charles Clarkson
如果您使用\'wp_nav_menu_objects\'
过滤器,则在Walker
处理它们。每个菜单项都是一个WP\\U Post对象,其中添加了一些特定于菜单的属性。这个ID
属性是帖子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;
}
您可以查看有关菜单项的更多详细信息
here