Отправляем в WordPress логин и пароль на почту после регистрации

На днях я столкнулся с такой нестандартной задачей — по одному из проектов нужно было отправить логин и пароль на почту сразу после регистрации пользователя на сайте.

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

Мне же как раз и нужно было сделать всё в точности наоборот. Делал для одного учебного центра онлайн платформу под курсы на WordPress и всё прекрасно. Курсы свои грузить просто и безлимитно условно, ученикам проходить тоже удобно, но есть одно но — кто эти ученики.

Сам учебный центр не типовые курсы рассчитанные на зумеров, а промышленной направленности — пром.безопасность, охрана труда и т.д. в общем курсы для сотрудников больших предприятий, заводов и подобного. Часто такие люди буквально на вы с новыми технологиями и типовой путь когда после регитсрации в WordPress приходит ссылка на сброс пароля не подходила.

А регистрируются ученики не самостоятельно, а их записывает и регистрирует пачкой сам учебный центр и нужно было придумать решение для того чтобы было просто, максимально прямо и в лоб. Получил на почту сразу логин, пароль и ссылку для входа в личный кабинет.

Я перебрал множество вариантов и никак не мог найти как это реализовать и в том числе с ИИ пытался найти решение, но оставил проблему на какое-то время и немного с другой стороны подошёл к вопросу и опять же через CPT нашёл решение данной задачи через хук в файле function.php

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

add_action('user_register', function($user_id) {
    // Генерируем пароль
    $password = wp_generate_password(12, true, true);
    wp_set_password($password, $user_id);
    
    $user_info = get_userdata($user_id);
    $login = $user_info->user_login;
    $email = $user_info->user_email;
    
    $subject = 'Ваши данные для входа в site.com';
    
    // Устанавливаем заголовки для HTML
    $headers = array('Content-Type: text/html; charset=UTF-8');
    
    $message = '
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body style="margin: 0; padding: 0; font-family: Arial, sans-serif; background-color: #f4f4f4;">
        <div style="max-width: 600px; margin: 0 auto; background-color: white; padding: 0;">
            
            <!-- Шапка -->
            <div style="background: linear-gradient(135deg, #2c5aa0 0%, #1e3f73 100%); color: white; padding: 30px 40px; text-align: center;">
                <h1 style="margin: 0; font-size: 28px; font-weight: bold;">site.com</h1>
                <p style="margin: 10px 0 0 0; font-size: 16px; opacity: 0.9;">Добро пожаловать на платформу!</p>
            </div>
            
            <!-- Основной контент -->
            <div style="padding: 40px;">
                <h2 style="color: #333; margin: 0 0 20px 0; font-size: 24px;">Здравствуйте!</h2>
                
                <p style="color: #666; font-size: 16px; line-height: 1.6; margin: 0 0 30px 0;">
                    Для вас создана учётная запись на платформе site.com
                </p>
                
                <!-- Блок с данными -->
                <div style="background: #f8f9fa; border: 2px solid #e9ecef; border-radius: 10px; padding: 25px; margin: 30px 0;">
                    <h3 style="color: #2c5aa0; margin: 0 0 20px 0; font-size: 20px; text-align: center;">
                        🔐 Ваши данные для входа
                    </h3>
                    
                    <div style="background: white; border-radius: 8px; padding: 20px; box-shadow: 0 2px 10px rgba(0,0,0,0.1);">
                        <div style="margin-bottom: 15px;">
                            <strong style="color: #333; font-size: 16px;">Логин:</strong>
                            <div style="background: #e3f2fd; border: 1px solid #90caf9; border-radius: 5px; padding: 10px; margin-top: 5px; font-family: monospace; font-size: 18px; font-weight: bold; color: #1565c0;">
                                ' . $login . '
                            </div>
                        </div>
                        
                        <div>
                            <strong style="color: #333; font-size: 16px;">Пароль:</strong>
                            <div style="background: #fff3e0; border: 1px solid #ffb74d; border-radius: 5px; padding: 10px; margin-top: 5px; font-family: monospace; font-size: 18px; font-weight: bold; color: #e65100;">
                                ' . $password . '
                            </div>
                        </div>
                    </div>
                </div>
                
                <!-- Кнопка входа -->
                <div style="text-align: center; margin: 40px 0;">
                    <a href="https://site.com/cabinet/" style="display: inline-block; background: linear-gradient(135deg, #28a745 0%, #20c997 100%); color: white; text-decoration: none; padding: 15px 40px; border-radius: 50px; font-size: 18px; font-weight: bold; box-shadow: 0 4px 15px rgba(40, 167, 69, 0.3); transition: all 0.3s ease;">
                        🚀 Войти в личный кабинет
                    </a>
                </div>
                
                <div style="background: #e8f5e8; border-left: 4px solid #28a745; padding: 15px; margin: 30px 0; border-radius: 5px;">
                    <p style="margin: 0; color: #155724; font-size: 14px;">
                        💡 <strong>Совет:</strong> Сохраните эти данные в надёжном месте
                    </p>
                </div>
            </div>
            
            <!-- Футер -->
            <div style="background: #f8f9fa; padding: 30px 40px; text-align: center; border-top: 1px solid #e9ecef;">
                <p style="margin: 0 0 10px 0; color: #666; font-size: 16px;">
                    С уважением,<br>
                    <strong style="color: #2c5aa0;">Команда site.com</strong>
                </p>
                <p style="margin: 0; color: #999; font-size: 12px;">
                    Это автоматическое сообщение, отвечать на него не нужно
                </p>
            </div>
            
        </div>
    </body>
    </html>';
    
    wp_mail($email, $subject, $message, $headers);
}, 10, 1);

Суть данного хука заключается не в том, чтобы не пытаться вытащить пароль из БД в зашифрованном виде и после этого как-то расшифровать и отправить в письме, а напротив пойти по пути когда мы сами переназначаем пароль в БД и паралельно отпраяем его в письме пользователю не вытаскивая из базы данных. Получает что этап сброса пароля пропускается, мы сами это делаем за пользователя.

На выходе пользователь получает простое и понятное сообщение и быстро приступает к обучению, без лишних сложностей.

Отправляем в WordPress логин и пароль на почту после регистрации
SEO-специалист Александр Брушкивский - личный блог