首页 > 解决方案 > 联系表格 7 提交后更改用户角色

问题描述

好的,我一直在尝试做以下事情:

如果当前用户角色是 SUBSCRIBER 并且联系表单 id "1234" 已成功提交,则将用户角色更改为 EDITOR。

这是我到目前为止所做的,但我不知道为什么它不起作用。

add_action( 'wpcf7_mail_sent', 'changerole_wpcf7' );

function changerole_wpcf7( $contact_form ) {
$user = wp_get_current_user();
     if ( ! empty( $user ) && in_array( "subscriber", (array) $user->roles ) && $contact_form->id() !== 1234 )
       return;
         $user->remove_role( "subscriber" );
         $user->add_role( "editor" );

    
}

标签: phpwordpresscontact-form-7

解决方案


好吧,伙计们,我终于成功了。我对@rank 代码做了一些小改动,并添加subscribers_only: true到了联系表 7 中的“其他设置”选项卡中。

add_action( 'wpcf7_mail_sent', 'changerole_wpcf7' );

function changerole_wpcf7( $cf7 ) {

    if ( is_user_logged_in() ) {
        $user = wp_get_current_user();
        $user_id = $user->ID;
        $user_meta = get_userdata($user_id);
        $user_roles = $user_meta->roles;      
        $submission = WPCF7_Submission::get_instance();
        
        if ( $cf7->id() == 1234 ) {
          if($submission) {
            if ( in_array( 'subscriber', $user_roles ) ) {
                wp_update_user( array( 'ID' => $user_id, 'role' => 'editor' ) );
                
            }
        }
    } else { return; }

}
}


推荐阅读