从用户后端删除/隐藏页面

时间:2017-01-25 作者:mesu

我在函数中使用此代码。php可以从自定义用户后端隐藏/删除一些页面,效果很好,但如何才能同时隐藏子页面呢?

add_filter( \'parse_query\' , \'exclude_pages_from_admin\' );

function exclude_pages_from_admin($query) {

global $pagenow,$post_type;
 if (is_admin() && $pagenow == \'edit.php\' && $post_type == \'page\' && current_user_can( \'custom_role\' )) {
    $query->query_vars[\'post__not_in\'] = array(\'1\',\'2\',\'3\');
 }

}

2 个回复
SO网友:Tunji

实现这一点的一种方法是通过循环父页面并获取其各自的子页面ID。

然后,可以合并生成的数组并将其用于\'post__not_in\' 变量

add_filter( \'parse_query\' , \'exclude_pages_from_admin\' );

function exclude_pages_from_admin( $query ) {

    global $pagenow,$post_type;
    $pages   = array(\'1\',\'2\',\'3\');
    foreach ( $pages as $parent_page ) {
        $args = array(
            \'post_type\' => \'page\',
            \'post_parent\' => $parent_page,
            \'fields\' => \'ids\',
        );
        $children = new WP_Query( $args );
        $pages = array_merge( $pages, $children );
    }
    if ( is_admin() && $pagenow == \'edit.php\' && $post_type == \'page\' && current_user_can(\'custom_role\') ) {
        $query->query_vars[\'post__not_in\'] = $pages;
    }

}

SO网友:Ben Lonsdale

编辑:对不起,我想我在这个问题上说错了!此方法用于删除菜单页。

我认为更简单的方法可能是:

add_action( \'admin_init\', \'my_remove_menu_pages\' );
function my_remove_menu_pages() {

    global $user_ID;

    if ( current_user_can( \'author\' ) ) {
        remove_menu_page( \'edit.php\' ); // Posts
        remove_menu_page(\'upload.php\'); // Media
        remove_menu_page(\'edit-comments.php\'); // Comments
        remove_menu_page(\'tools.php\'); // Tools
        remove_menu_page( \'wpcf7\' ); // Contact Form 7
        remove_menu_page(\'acf-options\'); //acf options
    }

    if ( current_user_can( \'editor\' ) ) {
        remove_menu_page(\'upload.php\'); // Media
        remove_menu_page(\'edit-comments.php\'); // Comments
        remove_menu_page(\'tools.php\'); // Tools
        remove_menu_page( \'wpcf7\' ); // Contact Form 7
        remove_menu_page( \'edit.php?post_type=acf\' ); // ACF
        remove_menu_page( \'admin.php?page=cptui_manage_post_types\' ); //CPT UI
    }

}
这是直接从目前的一个项目,我正在工作和工作的待遇!

相关推荐

404 of wp-admin pages

我有一个网站出现了问题(几个月来一直没有被修改过,所以没有做任何修改来破坏它)登录时,登录页面未设置样式,位于左上角。我可以正常登录,但当我尝试访问仪表板或任何/wp admin/。。。我得到404页。(网站加载公共内容罚款)我已经尽我所能搜索并尝试了一切。禁用所有插件,默认为menew。htaccessphpmyadmin重命名站点地址以前有没有人经历过这种情况,有没有其他想法?