Wordpress最终成员(UM)插件允许我们通过wp-admin将新注册的用户设置为“未决”。
挂起的函数有两件事:
见这里:
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');
}
}
我也尝试了太多的其他变体,包括,他们都破坏了网站。
因此,我请求社区提供一些支持/提示,说明如何在不发送电子邮件的情况下使用挂起的功能,或者如何使用我的钩子将状态设置为“等待管理评审”。
我一直在使用嗯github储存库来帮助我研究UM代码:
发布于 2016-05-17 01:45:49
经过相当深入的研究,我成功地识别了用户编辑个人资料时触发的um_submit_form_profile动作,但没有在注册时使用,从而解决了注册时重复的电子邮件问题。
这是我最初对新动作的钩子。这将在用户编辑其配置文件时将用户状态设置为挂起的管理评审。
// Set profile to under pending after edits
add_action('um_submit_form_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();
}
}
多亏了Champ,插件作者之一,我得到了一个更好的修复,它只是将帐户状态更改为等待管理员评审,而没有做任何其他事情。
// Set profile to under review after edits
add_action('um_user_edit_profile', 'um_post_edit_pending_hook');
function um_post_edit_pending_hook( $args ){
$user_id = $args['user_id'];
if ( is_super_admin() ) {
return;
}
update_user_meta( $user_id, 'account_status', 'awaiting_admin_review');
}
发布于 2020-05-20 02:49:12
我无法在UM 2+中实现这一点。然而,对于那些仍在努力解决这个问题的人,我确实找到了一种方法,通过在我找到的电子邮件通知片段的末尾添加用户元更改。我还调整了电子邮件,以包括“描述”字段从配置文件,以便管理员可以立即看到它是否已被更改,以包括任何不希望。
/*function to notify admin of profile changes*/
add_action( 'um_after_user_updated', 'my_after_user_updated', 10, 3 );
function my_after_user_updated( $user_id, $args, $userinfo ) {
um_fetch_user($user_id);
$groupMember = um_user('display_name');
$groupMmbr_name = um_user('user_login');
$groupMmbr_hidden = um_user('hide_in_members');
$groupMmbr_status = um_user('account_status');
$groupMmbr_desc = um_user('description');
$loggedIn_user = wp_get_current_user();
$loggedIn_userEml = $loggedIn_user->user_email;
$headers = array('Content-Type: text/html; charset=UTF-8', 'Cc:your-cc-address@yourwebsite.com', 'Bcc:',
'From:Your Website <website@yourwebsite.com>', 'Reply-To:No-reply Email<noreply@yourwebsitesite.com>');
wp_mail( 'your-admin-email-address@yourwebsite.com', 'The member profile '.$groupMember.' has been updated.',
'The <b>'.$groupMember.'</b> profile was updated by the user with this email address: '.$loggedIn_userEml.'. <a href="https://yourwebsite.com/member/'.$groupMmbr_name.'/?profiletab=main&um_action=edit"><br>
<b>Click here</b></a> to visit this profile online.<br><br><i style="color:#767676; font-size:11px; text-align:center;"><b>NOTE:</b> you must be logged in first to see this profile.</i>
<br><br>The new profile description is:<br><br>'.$groupMmbr_desc.'<br><br>',$headers);
update_user_meta( $user_id, 'account_status', 'awaiting_admin_review');
}
https://stackoverflow.com/questions/37239106
复制