2

我的形象

在此处输入图像描述

我只是想为某些用户隐藏特定页面。

function remove_menus(){
    // get current login user's role
    $roles = wp_get_current_user()->roles;
    // test role
    if( in_array('administrator',$roles)){
        remove_menu_page( 'edit-comments.php' ); //Posts
        remove_menu_page( 'tools.php' );
        remove_menu_page('edit.php');
        remove_menu_page('wpcf7');
    }
     
    }
    add_action( 'admin_menu', 'remove_menus' , 100 );

这是我到目前为止所尝试的,并且它在所有页面上都可以正常工作。

我的问题是我不想显示主页-首页(请查看我的图片)如果登录用户不是管理员。而且我想隐藏添加新的

4

2 回答 2

7

您可以使用用户的角色功能,并允许在角色的基础上添加新项目。

function manage_user_action() {

 // get current login user's role
    $roles = wp_get_current_user()->roles;

    if( !in_array('administrator',$roles)){
        //remove capabilities 
        $roles->remove_cap( 'edit_pages');
    }

}
add_action( 'admin_init', 'manage_user_action');

从列表中删除页面

function jp_exclude_pages_from_admin($query) {

   global $pagenow, $post_type;

  if ( !current_user_can( 'administrator' ) && $pagenow == 'edit.php' && $post_type == 'page' )
    $query->query_vars['post__not_in'] = array( '10'); // Enter your page IDs here


}
add_filter( 'parse_query', 'jp_exclude_pages_from_admin' ); 

如需更多帮助,请参阅此链接:单击此处

于 2018-10-30T08:25:32.843 回答
0

我已经扩展了@dineshkashera 答案以通过 ID 定位特定用户,代码应如下所示:

function jp_exclude_pages_from_admin($query) {

       global $pagenow, $post_type;

       $current_user_id = get_current_user_id();

          if ( $current_user_id == 2 && $pagenow == 'edit.php' && $post_type == 'page' )
            $query->query_vars['post__not_in'] = array( '11', '12','13'  ); // Enter your page IDs here

    }
    add_filter( 'parse_query', 'jp_exclude_pages_from_admin' ); 

此代码将获取 ID 为 2 的用户,并从其 WP 页面编辑屏幕中删除页面 ID 11,12 和 13。

于 2020-03-28T02:42:14.083 回答