根据用户权能(角色)列出子页面

时间:2017-02-19 作者:Simon

我需要在侧栏菜单中列出当前父页的所有子页。子页面被用户角色限制查看,现在可以说是“A”和“B”。我使用“Members Plugin“来管理它。

我创建了一个功能,可以很好地列出这些子页面,但我无法找到不列出当前用户无权访问的子页面的方法。

因此,如果我以角色“A”的用户身份登录,我看不到角色“B”可以访问的子页面,反之亦然。

这是current code.

如有任何帮助/提示,将不胜感激。

非常感谢。

1 个回复
最合适的回答,由SO网友:David Lee 整理而成

如果Rol 在meta中,您必须获取所有用户的ID,然后将meta访问rol与用户的rol进行比较:

    $post_parent_ID = $post->post_parent ? $post->post_parent : $post->ID;

    $title = $post->post_parent ? get_the_title( $post->post_parent ) : get_the_title( $post->ID );
    //we use get posts to get all posts for the given ID
    $children_pages_array = get_posts(array(\'numberposts\' => -1, \'post_status\' => \'publish\', \'post_type\' => \'any\', \'post_parent\' => $post_parent_ID, \'suppress_filters\' => false));
    //we get the user rol
    $user_role = sb_get_user_role();
    //here we create an array that will be populated with IDs
    $ID_pages_rol_array = array();
    foreach ($children_pages_array as $child_page_obj) {
        //we get the rol that can access this page
        $page_role = get_post_meta($child_page_obj->ID, \'_members_access_role\');
        //do the current user rol have access to this page?
        if ($page_role == $user_role) {
            //yes it does add to the IDs of pages that this rol can access
            array_push($ID_pages_rol_array, $child_page_obj->ID);
        }
    }
    $children = wp_list_pages(array(
        \'title_li\' => \'\',
        \'include\' => $ID_pages_rol_array, //lets send those IDs to be formatted as list items
        \'echo\' => 0,
        \'depth\' => 1
            ));
您可以使用get_posts (实际上是整个post对象)创建允许的ID数组后,可以将其发送到wp_list_pages.

相关推荐

Navigational error

基本上,我有一个标题图片,我改变了后面的链接,转到了主网站,并计划在菜单中创建一个新闻选项,链接到博客主页,更改图像的链接后,我不再有到主博客页面的链接,正因为如此,我创建了一个名为“主页”的额外菜单选项,该选项将转到主博客页面,但我无法确定这将在何处更改,因为它不在我其余导航按钮的菜单中。简而言之,如何将主页更改为“新闻”,并在菜单中有不同的位置?如果你需要看博客来了解我的意思,那么它就打开了blog.lendfair.co.uk.http://wordpress.org/themes/construc