Отправка автоматического email пользователю после wp_create_user

29 янв. 2012 г., 21:43:23
Просмотры: 26.4K
Голосов: 3

Итак, вот код, который я написал -- Он работает, но теперь мне нужно, чтобы он автоматически отправлял сгенерированные имя пользователя и пароль на этот email адрес. Также не сохраняются имя и фамилия. Помогите!

// Подключаем WordPress
require('wordpress/wp-blog-header.php');

// Получаем email и имя из POST запроса
$user_email = trim(isset($_POST['payer_email']) ? $_POST['payer_email'] : "");
$user_name = trim(isset($_POST['first_name']) ? $_POST['first_name'] : "");

// Проверяем существование пользователя
$user_id = username_exists( $user_name );
if ( !$user_id ) {
    // Генерируем случайный пароль и создаем пользователя
    $random_password = wp_generate_password( 12, false );
    $user_id = wp_create_user( $user_name, $random_password, $user_email );
} else {
    $random_password = __('Пользователь уже существует. Пароль унаследован.');
}
0
Все ответы на вопрос 4
2

Вы можете использовать это: wp_new_user_notification( $user_id, $random_password );

16 июн. 2013 г. 05:26:40
Комментарии

"Этот ответ был автоматически помечен как низкокачественный из-за его длины и содержания", что, я уверен, вам не нужно. Пожалуйста, объясните ваш ответ, а не просто публикуйте код.

s_ha_dum s_ha_dum
16 июн. 2013 г. 06:29:23

Дополнительная информация по этому вопросу: http://codex.wordpress.org/Function_Reference/wp_new_user_notification

Уведомлять администратора блога о новом пользователе, обычно по электронной почте, а также отправлять электронное письмо с логином/паролем новому пользователю.

bryceadams bryceadams
8 февр. 2015 г. 12:39:05
0

Существует хук user_register, который срабатывает в конце добавления пользователя и принимает параметр $user_id. Вы можете использовать его для отправки имени пользователя и пароля, но вам придется сначала update_user_meta(), чтобы получить имя и другие данные. Поэтому, возможно, лучше делать это в конце процесса создания пользователя и добавления его метаданных.

Единственное, что делает функция создания пользователя — это добавляет его в базу данных. Для добавления дополнительных данных пользователя нужно использовать update_user_meta(). В get_the_author_meta() есть список стандартных метаданных пользователя. Если вы добавите данные с ключом из этого списка, они автоматически отобразятся в profile.php. В противном случае вам придется расширять профиль пользователя для их отображения.

Также обратите внимание: похоже, вы устанавливаете $random_password в неслучайное значение, и что, вероятно, более важно — делаете это ПОСЛЕ того, как оно уже было использовано.

29 янв. 2012 г. 22:01:31
0

Я бы использовал wp_insert_user вместо wp_create_user, чтобы можно было добавить больше данных пользователя при первом создании. Проверьте кодекс WordPress, чтобы узнать все возможные поля для вставки. (wp_create_user в любом случае просто вызывает эту функцию!) Для отправки данных для входа пользователю можно использовать wp_mail($user_email, $subject, $message); Конечно, вам нужно будет установить $message, включив в тело письма имя пользователя и пароль. Еще один момент: вы можете создать функцию wp_new_user_notification, которая является заменяемой функцией и вызывается при регистрации нового пользователя. Вы можете поместить туда функцию отправки почты. Я знаю, что такие плагины, как Register Plus Redux и Pie Register, делают именно так.

29 нояб. 2012 г. 16:16:54
0

Думаю, это то, что вам нужно. Этот код добавит имя и фамилию в метаданные пользователя и отправит письмо с уведомлением о добавлении этих данных.

// Добавляем действие при регистрации пользователя
add_action('user_register', 'add_user_custom_meta');

function add_user_custom_meta($user_id) {
    // Получаем данные пользователя
    $user_info = get_userdata($user_id);
    
    // Если передано имя - сохраняем в метаданные
    if (isset($_POST['first_name']))
        update_user_meta($user_id, 'first_name', $_POST['first_name']);

    // Если передана фамилия - сохраняем в метаданные
    if (isset($_POST['last_name']))
        update_user_meta($user_id, 'last_name', $_POST['last_name']);

    // Отправляем email пользователю
    wp_mail(
        $user_info->user_email, 
        'Ваше имя и фамилия', 
        sprintf('Привет! Мы добавили ваше имя: %s и фамилию: %s на наш сайт.', $_POST['first_name'], $_POST['last_name'])
    );
}
16 июн. 2013 г. 05:47:37