Отправка пользовательских писем с помощью ajax - регистрация пользователей в woocommerce / wordpress - PullRequest
0 голосов
/ 03 января 2019

В настоящее время я создаю пользовательскую форму входа / регистрации, которая либо регистрирует пользователя, либо регистрирует пользователя с помощью ajax. Я могу войти в систему пользователей, и я также могу создавать пользователей, однако у меня возникла проблема с отправкой письма активации после того, как пользователь зарегистрировался.

Я собираюсь отправить электронное письмо с информацией об активации учетной записи новым пользователям при регистрации. Это электронное письмо будет содержать ссылку на определенную страницу на моем сайте, на которой при обращении будет запускаться код для обновления пользовательской мета-метки is_activation с 0 до 1, чтобы указать, что пользователь подтвердил свою электронную почту.

Новый пользователь создается с использованием следующего кода. Это вызвано из моего сценария ajax.

function ajax_create_new_user () {
    $new_account_username = stripcslashes($_POST['new_account_username']);
    $new_account_email = strtolower(stripcslashes($_POST['new_account_email']));
    $new_account_password = $_POST['new_account_password'];
    $new_account_first_name = $_POST['new_account_first_name'];
    $new_account_last_name = $_POST['new_account_last_name'];

    $user_id = wp_create_user( $new_account_username, $new_account_password, $new_account_email );

    if ( is_wp_error( $user_id ) ) {
        echo json_encode( $user_id->get_error_message() );
        die();
    }

    wp_update_user(
        array(
            'ID' => $user_id,
            'role' => 'customer',
            'display_name' => $new_account_first_name . " " . $new_account_last_name
            )
    );

    $data = array(
                  'first_name'            => $new_account_first_name,
                  'last_name'             => $new_account_last_name,
                  'billing_first_name'    => $new_account_first_name,
                  'billing_last_name'     => $new_account_last_name
                  );
    foreach ($data as $meta_key => $meta_value ) {
        update_user_meta( $user_id, $meta_key, $meta_value );
    }

Затем я автоматически регистрирую пользователя, используя следующее:

 $creds = array(
                'user_login'    => $new_account_username,
                'user_password' => $new_account_password,
                'remember'      => false,
                   );

    $user_login = wp_signon($creds, false);

    if ( is_wp_error( $user ) ) {
        echo json_encode( $user->get_error_message() );
        die();
    }

После этого я пытаюсь создать код, чтобы отправить электронное письмо пользователю. До сих пор я нашел и использовал функцию wp_mail () . Функция работает, и я могу отправить новому пользователю электронное письмо.

$code = md5(time());
    $security_string = array('id' => $user_id, 'securitycode' => $code );

    update_user_meta( $user_id, 'is_activated', 0);
    update_user_meta( $user_id, 'activation_code', $code);
    $url = get_site_url(). '/verify/?p=' .base64_encode( serialize($security_string));
    $html = ( 'Please click <a href="'.$url.'">here</a> to verify your email address.' );

    wp_mail( $new_account_email, 'Activate your Account', $html);

К сожалению, я не уверен, как подойти к созданию пользовательского шаблона электронной почты (HTML и простой текстовый формат), который будет вызываться и заполняться моим кодом.

Я нашел эту статью ( нажмите здесь ), в которой показано, как создать настраиваемое электронное письмо WooCommerce, однако как я смогу передавать информацию о новых пользователях (электронная почта, URL-адрес безопасности и т. д.) на это письмо, поэтому оно заполнено и отправлено?

Любая информация будет полезна, спасибо!

Josh

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...