如果用户无法阅读,则删除菜单项

时间:2013-08-13 作者:mcgrailm

我想为所有用户创建一个菜单,如果他们无法访问链接指向的页面,则从菜单中隐藏/删除项目。对我来说,这似乎是一个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;
}

2 个回复
SO网友:Digitalchild

这是几年前在这里提出的问题。

Display navigation menu item conditionally based on user capabilities

这里有几个可行的选择。

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

结束

相关推荐

navigation among single posts

在twentyeleven 主题每个帖子页面都有两个导航链接,指向上一篇和下一篇帖子,与用户的搜索无关。也就是说,下一篇文章是按时间顺序出现在主博客页面中的连续文章,即使用户已从类别或标记页面打开了单个文章页面,因此下一篇文章可能是另一个类别和标记。是否有任何主题/插件或其他东西可以使上一篇/下一篇文章的链接与用户来自的页面保持一致?