Отправка автоматического email пользователю после wp_create_user
Итак, вот код, который я написал -- Он работает, но теперь мне нужно, чтобы он автоматически отправлял сгенерированные имя пользователя и пароль на этот 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 = __('Пользователь уже существует. Пароль унаследован.');
}

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

Дополнительная информация по этому вопросу: http://codex.wordpress.org/Function_Reference/wp_new_user_notification
Уведомлять администратора блога о новом пользователе, обычно по электронной почте, а также отправлять электронное письмо с логином/паролем новому пользователю.

Существует хук user_register
, который срабатывает в конце добавления пользователя и принимает параметр $user_id. Вы можете использовать его для отправки имени пользователя и пароля, но вам придется сначала update_user_meta()
, чтобы получить имя и другие данные. Поэтому, возможно, лучше делать это в конце процесса создания пользователя и добавления его метаданных.
Единственное, что делает функция создания пользователя — это добавляет его в базу данных. Для добавления дополнительных данных пользователя нужно использовать update_user_meta()
. В get_the_author_meta()
есть список стандартных метаданных пользователя. Если вы добавите данные с ключом из этого списка, они автоматически отобразятся в profile.php
. В противном случае вам придется расширять профиль пользователя для их отображения.
Также обратите внимание: похоже, вы устанавливаете $random_password
в неслучайное значение, и что, вероятно, более важно — делаете это ПОСЛЕ того, как оно уже было использовано.

Я бы использовал 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, делают именно так.

Думаю, это то, что вам нужно. Этот код добавит имя и фамилию в метаданные пользователя и отправит письмо с уведомлением о добавлении этих данных.
// Добавляем действие при регистрации пользователя
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'])
);
}
