• Здравствуйте!
    Прошу помочь с регистрацией на сайте и уведомлением зарегистрированного пользователя стандартным приветственным письмом, а админа о новом зарегистрированном пользователе.

    У меня своя страница регистрации, отличная от той, которая стоит на WordPress по умолчанию.

    Поменял ссылку на страницу регистрации этим кодом в functions.php:

    add_filter( 'register_url', 'change_my_register_url' );
    function change_my_register_url( $url ) {
        if( is_admin() ) {
            return $url;
        }
        return "/account/";
    }

    Этот код отвечает за проверку на ошибки и регистрацию пользователя и прописан в page-account.php:

    <?php
       $error= '';
       $success = '';
       global $wpdb, $PasswordHash, $current_user, $user_ID;
       if(isset($_POST['task']) && $_POST['task'] == 'register' ) {
           $password1 = $wpdb->escape(trim($_POST['password1']));
           $password2 = $wpdb->escape(trim($_POST['password2']));
           $email = $wpdb->escape(trim($_POST['email']));
           $username = $wpdb->escape(trim($_POST['username']));
       if( $email == "" || $password1 == "" || $password2 == "" || $username == "") {
           $error= '<div class="mistake">Все поля обязательны</div>';
       } else if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
           $error= '<div class="mistake">Ошибка ввода Email</div>';
       } else if(email_exists($email) ) {
           $error= '<div class="mistake">Email уже зарегистрирован</div>';
       } else if($password1 <> $password2 ){
           $error= '<div class="mistake">Пароли не совпадают</div>';
       } else {
           $user_id = wp_insert_user(
               array ('user_pass' => apply_filters('pre_user_user_pass', $password1), 'user_login' => apply_filters('pre_user_user_login', $username), 'user_email' => apply_filters('pre_user_user_email', $email), 'role' => 'subscriber' ) );
           if( is_wp_error($user_id) ) {
               $error= '<div class="mistake">Ошибка создания профиля</div>';
           } else {
               do_action('user_register', $user_id);
               $success = '<div class="notification-input-form">Вы зарегистрировались</div>';
           }
       }
       }
    ?>
    
    <h1>Регистрация</h1>
    <form method="post">
    <?php if(! empty($err) ) : echo ''.$err.''; endif; ?>
    <?php if(! empty($success) ) : echo ''.$success.''; endif; ?>
    <?php if($sucess != "") { echo $sucess; } ?> <?php if($error!= "") { echo $error; } ?>
    
    <input type="text" autocomplete="off" name="email" id="email" placeholder="Email" value="">
    <input type="text" autocomplete="off" name="username" id="username" placeholder="Логин на латинском" value="">
    <input type="password" name="password1" placeholder="Пароль" value="">
    <input type="password" name="password2" id="password2" placeholder="Повторите пароль" value="">
    
    <button name="btnregister">Зарегистрироваться</button>
    <input type="hidden" name="task" value="register">
    </form>
    <div class="forget">Регистрируясь, вы принимаете <a href="/agreement/">пользовательское соглашение</a></div>

    В целом, всё отлично работает, выдаёт ошибки при проверке и регистрирует пользователя при успешном вводе, но письма не приходят.
    Пытался через wp_new_user_notification что-то прописать, но ничего не получается.

    Очень прошу помощи.

Просмотр 1 ответа (всего 1)
  • Через wp_new_user_notification_email_admin тоже не приходит.

    add_filter( 'wp_new_user_notification_email_admin', 'custom_wp_new_user_notification_email', 10, 3 );
    
    function custom_wp_new_user_notification_email( $wp_new_user_notification_email, $user, $blogname ) {
        $wp_new_user_notification_email['subject'] = sprintf( '[%s] Текст темы', $blogname, $user->user_login );
        $wp_new_user_notification_email['message'] = sprintf( "%s ( %s ) Текст сообщения %s.", $user->user_login, $user->user_email, $blogname );
        return $wp_new_user_notification_email;
    }
Просмотр 1 ответа (всего 1)
  • Тема «Письмо после регистрации» закрыта для новых ответов.