前几天我从Wordpress Ultimate Members插件中编辑了一些代码,如果配置文件由用户编辑,则将用户配置文件更改为挂起。
但是,我注意到该代码还将管理员帐户也设置为挂起。 我不想要这个,所以我一直在尝试使用 if/else 语句在脚本运行之前查询用户是否是管理员。
我知道这对于 PHP 专家来说很简单,但我已经尝试了很多变体,并且管理员仍被设置为待批准。
以下是将 admin 设置为挂起的原始代码:
// Set profile to under review after edits
add_action('um_user_edit_profile', 'um_post_edit_pending_hook', 10, 2);
function um_post_edit_pending_hook($user_id, $args){
global $ultimatemember;
$ultimatemember->user->pending();
}
这是我试图绕过管理员的代码,它不起作用。 我不会添加我尝试过的所有变体。
add_action('um_user_edit_profile', 'um_post_edit_pending_hook', 10, 2);
function um_post_edit_pending_hook($user_id, $args){
if ( is_admin() ) {
return false;
} else {
global $ultimatemember;
$ultimatemember->user->pending();
}
}
任何协助将不胜感激。
此条件标记检查是否正在尝试显示仪表板或管理面板。它不应用作验证当前用户是否有权查看仪表板或管理面板的方法(请尝试current_user_can()
):
https://codex.wordpress.org/Function_Reference/current_user_can
源:
https://codex.wordpress.org/Function_Reference/is_admin
@user45250已经很好地解释了这一点。我添加了这个答案以提供一些示例代码。
这是我之前评论中的代码。
add_action('um_user_edit_profile', 'um_post_edit_pending_hook', 10, 2);
function um_post_edit_pending_hook($user_id, $args){
if ( current_user_can('administrator') ) {
return false;
} else {
global $ultimatemember;
$ultimatemember->user->pending();
}
}
附言这里有一个相关的问题,gmazzap的回答有更详细的信息。