подписчик wordpress с контактной формой 7

Кто-нибудь знает, можно ли с помощью контактной формы 7 установить флажок, который при активации посетителем регистрирует этот посетитель как пользователь wordpress, как подписчик?

После комментария Говарда Э вопрос меняется на...

Как можно использовать wpcf7_before_send_mail для регистрации нового пользователя с данными формы?

что-то вроде этого, но я не знаю, правильно ли это...

add_action( 'wpcf7_before_send_mail', 'register_user' );

function register_user($cf7) {
    $form_id = $cf7->id();
    
    if ($form_id == 300 || $form_id == 301 || $form_id == 302) {
        $submission = WPCF7_Submission :: get_instance();
    }
    if ($submission) {
        if (empty($posted_data)) { return; }
        
        $accept = $posted_data['acceptance-register-yes']; //acceptance check to be registered
        if (empty($accept)) { return; }
        
        $email = $posted_data['your-email'];
        $name1 = $posted_data['your-name'];
        $name2 = $posted_data['your-last-name'];
        $name = ''; //here will go function to delete spaces and generate user name from $name1 + $name2
        $pass = ''; //here will go function to random password
        
        function create_user($n,$p,$e){
            if (!username_exists($n)  && !email_exists($e)) {
                $user_id = wp_create_user($n, $p, $e);
                $user = new WP_User($user_id);
                $user->set_role( 'subscriber' );
            }
        }
        create_user($name,$pass,$email);        
    }   
}

огромное спасибо


person kaqu    schedule 10.12.2020    source источник
comment
Конечно, это возможно. Вы можете использовать хук wpcf7_before_send_mail - однако ваш вопрос в его нынешнем виде не по теме, и вам следует подумать о его пересмотре.   -  person Howard E    schedule 10.12.2020
comment
Для этого есть как минимум один плагин. wordpress.org/plugins/frontend-registration-contact-form-7   -  person O. Jones    schedule 10.12.2020
comment
Я думаю, что плагин для регистрации внешнего интерфейса не позволяет регистрировать флажок   -  person kaqu    schedule 10.12.2020


Ответы (1)


Вы можете создать пользователя и подключиться к wpcf7_before_send_mail вот так.

function wp_create_custom_account(){
  
  // Get the WPCF7 Submission instance
  $submission = WPCF7_Submission::get_instance();

    if ($submission) {
        $posted_data = $submission->get_posted_data();

        // Get the posted variables
        $username = isset($posted_data['username'])?$posted_data['username']:'';
        $password = isset($posted_data['password'])?$posted_data['password']:'';
        $eml = isset($posted_data['eml'])?$posted_data['eml']:'';
        
        // This can be radio or checkbox. Adjust your code accordingly
        $radio = isset($posted_data['radio'][0])?$posted_data['radio'][0]:'';

        if ($radio) {
          $user = $username;
          $pass = $password;
          $email = eml;
          if ( !username_exists( $user )  && !email_exists( $email ) ) {
            $user_id = wp_create_user( $user, $pass, $email );
            $user = new WP_User( $user_id );
            $user->set_role( 'subscriber' );
          } 
        }
    } 
  
  
}
add_action('wpcf7_before_send_mail','wp_create_custom_account');
person Ozgur Sar    schedule 10.12.2020