WordPress终极会员(UM)插件允许我们通过wp-admin将新注册的用户设置为“待定”。
Pending函数做两件事:
- 将用户状态设置为“等待管理员批准”
- 向用户发送电子邮件
请看这里:
function pending(){
global $ultimatemember;
$this->set_status('awaiting_admin_review');
$ultimatemember->mail->send( um_user('user_email'), 'pending_email' );
字符串
但是,如果用户编辑现有帐户,则无法将现有用户设置为“待定”管理员批准。
我不是很擅长PHP,但我发现了一个挂钩到'um_user_edit_profile'操作,所以如果现有用户编辑他们的配置文件,状态将更改为'pending'。
请看这里:
// Set profile to under pending after edits
add_action('um_user_edit_profile', 'um_post_edit_pending_hook', 10, 2);
function um_post_edit_pending_hook($user_id, $args){
if ( is_super_admin() ) {
return false;
} else {
global $ultimatemember;
$ultimatemember->user->pending();
}
}
型
不幸的是,我刚刚发现'um_user_edit_profile'操作也在注册时使用,所以我的钩子也在注册时触发,导致两封电子邮件被发送。
我试图通过以下方式来克服这一点:
添加和if语句,以便仅为登录的用户触发操作:
// 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){
if ( is_super_admin() ) {
return false;
} else {
if ( is_user_logged_in() ) {
global $ultimatemember;
$ultimatemember->user->pending();
}
}
型
通过尝试将状态设置为“等待管理员批准”,而不包括电子邮件:
// 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){
if ( is_super_admin() ) {
return false;
} else {
global $ultimatemember;
$ultimatemember->set_status('awaiting_admin_review');
}
}
// 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){
if ( is_super_admin() ) {
return false;
} else {
global $ultimatemember;
$this->set_status('awaiting_admin_review');
}
}
型
我也尝试了太多的其他变化,包括和所有这些打破了网站。
所以,我要求社区提供一些支持/指针,告诉他们如何在不发送电子邮件的情况下使用挂起功能,或者如何使用我的钩子将状态设置为“等待管理员审查”。
我一直在使用UM github repository来帮助我研究UM代码:
3条答案
按热度按时间omhiaaxx1#
我无法在UM 2+中实现这一点。然而,对于那些仍然在为此而挣扎的人,我确实找到了一种方法,通过将用户Meta更改添加到我发现的电子邮件通知片段的末尾。我还调整了电子邮件,以包括配置文件中的“描述”字段,因此管理员可以立即看到它是否被更改为包括任何不受欢迎的内容。
字符串
0ejtzxu12#
经过相当多的进一步研究,我设法确定了um_submit_form_profile操作,该操作在用户编辑其配置文件时触发,但在注册时不使用,因此注册时的重复电子邮件问题得到了解决。
这是我对新操作的原始钩子。当用户编辑他们的个人资料时,它将用户状态设置为待处理的管理员审查。
字符串
感谢插件作者之一的Champ Campo,我得到了一个更好的解决方案,只是将帐户状态更改为等待管理员审核,其他什么都不做。
型
8i9zcol23#
我只是想补充一下@DaniB的回答。当你直接用
update_user_meta
函数更改用户数据时,你应该在update_user_meta
之后清除用户缓存,这样它会用更新后的数据再次重建该高速缓存:UM()->user()->remove_cache( $user_id )
个如果不清除用户缓存,旧的account_status仍将加载并在UM函数/功能中使用。