我设置了一个 wordpress 站点,里面有一个主管理员,然后我有用户角色管理器来更改订阅者角色以便能够添加新用户。然后,我成功地将订阅者限制为仅使新用户具有我创建的“播放器”的新角色。
然后,我为每个用户添加了一个名为“游戏”的自定义字段。订阅者只能更改他和“玩家”的自定义字段。玩家不能改变这个值。
当订阅者登录时,我需要更改“所有用户”页面,以仅显示“游戏”具有相同自定义字段值的用户列表。
我尝试了各种不同的插件,并尝试了我自己的代码更改,但没有任何效果:(
任何帮助表示赞赏
安迪
我设置了一个 wordpress 站点,里面有一个主管理员,然后我有用户角色管理器来更改订阅者角色以便能够添加新用户。然后,我成功地将订阅者限制为仅使新用户具有我创建的“播放器”的新角色。
然后,我为每个用户添加了一个名为“游戏”的自定义字段。订阅者只能更改他和“玩家”的自定义字段。玩家不能改变这个值。
当订阅者登录时,我需要更改“所有用户”页面,以仅显示“游戏”具有相同自定义字段值的用户列表。
我尝试了各种不同的插件,并尝试了我自己的代码更改,但没有任何效果:(
任何帮助表示赞赏
安迪
得到此问答中的代码,删除其他用户在用户列表中查看管理员的能力?.
您需要对其进行一些调整以适应您的角色和能力,很可能会更改meta_key和meta_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
);
}
}