Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Wordpress终极会员插件–;将用户状态设置为等待管理员批准_Php_Wordpress - Fatal编程技术网

Php Wordpress终极会员插件–;将用户状态设置为等待管理员批准

Php Wordpress终极会员插件–;将用户状态设置为等待管理员批准,php,wordpress,Php,Wordpress,Wordpress Ultimate Member(UM)插件允许我们通过wp admin将新注册用户设置为“待定” 挂起函数执行两项操作: 将用户状态设置为“等待管理员批准” 向用户发送电子邮件 请看这里: function pending(){ global $ultimatemember; $this->set_status('awaiting_admin_review'); $ultimatemember->mail->send( um_user('user_

Wordpress Ultimate Member(UM)插件允许我们通过wp admin将新注册用户设置为“待定”

挂起函数执行两项操作:

  • 将用户状态设置为“等待管理员批准”
  • 向用户发送电子邮件
请看这里:

function pending(){ 
global $ultimatemember; 
$this->set_status('awaiting_admin_review'); 
$ultimatemember->mail->send( um_user('user_email'), 'pending_email' );  
// 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(); 
    }
}
但是,如果用户编辑现有帐户,则无法将现有用户设置为“待定”管理员批准

我不擅长PHP,但我找到了一个“um_user_edit_profile”操作的钩子,因此如果现有用户编辑他们的配置文件,状态将更改为“pending”

请看这里:

function pending(){ 
global $ultimatemember; 
$this->set_status('awaiting_admin_review'); 
$ultimatemember->mail->send( um_user('user_email'), 'pending_email' );  
// 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代码:

经过一段时间的进一步研究,我成功地确定了当用户编辑其配置文件时触发的UM_提交表单_配置文件操作,但在注册时未使用,因此注册时的重复电子邮件问题得到解决

这里是我的原始钩入新的行动。这会在用户编辑其配置文件时将用户状态设置为“待定管理员审核”

// 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 Campo,我得到了一个更好的修复程序,只需将帐户状态更改为等待管理员审核,而不做其他事情

// 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');

}

我无法在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');
}
/*用于通知管理员配置文件更改的函数*/
添加操作('um_在用户更新后,'my_在用户更新后,'10,3');
更新用户后的函数my\u($user\u 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_用户('account_status');
$groupMmbr_desc=um_用户('description');
$loggedIn_user=wp_get_current_user();
$loggedIn\u userEml=$loggedIn\u user->user\u email;
$headers=array('Content-Type:text/html;charset=UTF-8','Cc:your-Cc-address@yourwebsite.com“,”密件抄送:“,
'发件人:您的网站','回复:无回复电子邮件';
wp_邮件(“您的管理员电子邮件-address@yourwebsite.com“,”成员配置文件“$groupMember.”已更新。“,
“用户使用以下电子邮件地址更新了“%$groupMember.”配置文件:“..loggedIn_userEml.”。若要联机访问此配置文件。

注意:必须先登录才能查看此配置文件。

新的配置文件描述是:

'.$groupMmbr_desc.

',$headers); 更新_user_meta($user_id,'account_status','waiting_admin_review'); }