限制wordpress用户仅编辑具有相同元键值的用户

时间:2013-02-15 23:20:01

标签: wordpress admin user-roles

我有一个wordpress网站设置,里面有一个主管理员,然后我有用户角色管理器来更改订阅者角色,以便能够添加新用户。然后,我成功地将订阅者限制为仅创建具有新角色的新用户,我创建了“播放器”。

然后我为每个名为“游戏”的用户添加了一个自定义字段。订户只能更改他和“播放器”的自定义字段。玩家无法更改此值。

我需要在订阅者登录时更改“所有用户”页面,以仅显示“游戏”具有相同cutom字段值的用户列表。

我尝试了各种不同的插件,并在更改代码时尝试了自己的dablle,但没有任何效果:(

任何帮助表示赞赏

安迪

1 个答案:

答案 0 :(得分:1)

获得此Q& A Remove Ability for Other Users to View Administrator in User List?的代码。

您需要稍微调整一下以适应您的角色和功能,很可能会更改meta_keymeta_value值。我添加了对$pagenow的检查,以确保只会在/wp-admin/users.php中触发。

add_action( 'pre_user_query', 'filter_users_wpse_10742' );

function filter_users_wpse_10742( $user_search ) 
{
    global $pagenow;
    if( 'users.php' != $pagenow)
        return;

    $user = wp_get_current_user();

    if ( $user->roles[0] != 'administrator' ) 
    { 
        global $wpdb;

        $user_search->query_where = 
        str_replace('WHERE 1=1', 
            "WHERE 1=1 AND {$wpdb->users}.ID IN (
                 SELECT {$wpdb->usermeta}.user_id FROM $wpdb->usermeta 
                    WHERE {$wpdb->usermeta}.meta_key = '{$wpdb->prefix}user_level' 
                    AND {$wpdb->usermeta}.meta_value != 10)", 
            $user_search->query_where
        );
    }
}