限制wordpress用户仅编辑具有相同元键值的用户
我有一个wordpress网站设置,里面有一个主管理员,然后我有用户角色管理器来更改订户角色,以便能够添加新用户。然后,我成功地将订户限制为仅使用我创建的新角色“player”创建新用户 然后,我为每个用户添加了一个名为“game”的自定义字段。订阅者只能更改其和“玩家”自定义字段。玩家无法更改此值 当用户登录时,我需要更改“所有用户”页面,以仅显示具有“游戏”相同cutom字段值的用户列表 我尝试过各种不同的插件,也尝试过我自己在修改代码方面的尝试,但没有任何效果:( 谢谢你的帮助限制wordpress用户仅编辑具有相同元键值的用户,wordpress,admin,user-roles,Wordpress,Admin,User Roles,我有一个wordpress网站设置,里面有一个主管理员,然后我有用户角色管理器来更改订户角色,以便能够添加新用户。然后,我成功地将订户限制为仅使用我创建的新角色“player”创建新用户 然后,我为每个用户添加了一个名为“game”的自定义字段。订阅者只能更改其和“玩家”自定义字段。玩家无法更改此值 当用户登录时,我需要更改“所有用户”页面,以仅显示具有“游戏”相同cutom字段值的用户列表 我尝试过各种不同的插件,也尝试过我自己在修改代码方面的尝试,但没有任何效果:( 谢谢你的帮助 安迪从这个
安迪从这个问答中得到了代码 您需要对其进行一些调整,以适应您的角色和功能,很可能会更改
meta_键
和meta_值
值。我添加了$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
);
}
}
就我所知,它作为“pre_user_update”是如何工作的?它不是一个wordpress函数,它没有列在pre_user_查询如何调用中?ah iv发现了一些新列表,忽略最后一个问题。感谢帮助:)