Я реализовал пользовательскую форму входа и регистрации в WP, как уже упоминалось Вот. Теперь пользователь может зарегистрироваться, но не может войти, пока администратор не утвердит этого пользователя из бэкэнда.
Мне нужно реализовать электронное письмо с уведомлением администратора для регистрации нового пользователя, а также электронное письмо с уведомлением пользователя, которое администратор утверждает из бэкэнда. Я попробовал ниже код в моей регистрационной форме для отправки электронной почты, но это не похоже на работу. Более того, стандартное письмо продолжает отправляться.
/ Redefine user notification function
if ( !function_exists('wp_new_user_notification') ) {
function wp_new_user_notification( $user_id, $plaintext_pass = '' ) {
$user = new WP_User($user_id);
$user_login = stripslashes($user->user_login);
$user_email = stripslashes($user->user_email);
$message = sprintf(__('New user registration on your blog %s:'), get_option('blogname')) . "\r\n\r\n";
$message .= sprintf(__('Username: %s'), $user_login) . "\r\n\r\n";
$message .= sprintf(__('E-mail: %s'), $user_email) . "\r\n";
@wp_mail(get_option('admin_email'), sprintf(__('[%s] New User Registration'), get_option('blogname')), $message);
if ( empty($plaintext_pass) )
return;
$message = __('Hi there,') . "\r\n\r\n";
$message .= sprintf(__("Welcome to %s! Here's how to log in:"), get_option('blogname')) . "\r\n\r\n";
$message .= wp_login_url() . "\r\n";
$message .= sprintf(__('Username: %s'), $user_login) . "\r\n";
$message .= sprintf(__('Password: %s'), $plaintext_pass) . "\r\n\r\n";
$message .= sprintf(__('If you have any problems, please contact me at %s.'), get_option('admin_email')) . "\r\n\r\n";
$message .= __('Adios!');
wp_mail($user_email, sprintf(__('[%s] Your username and password'), get_option('blogname')), $message);
}
}
Для подтверждения регистрации пользователя я использую этот плагин.
Как я могу отправлять электронную почту, когда пользователь регистрируется, используя мою пользовательскую форму, и уведомлять пользователя, когда администратор одобряет.
Вы можете настроить содержимое электронной почты для отправки пользователю при новой регистрации на странице настроек плагина WP Approve User. Настройки для этого плагина доступны в меню «Настройки» на панели инструментов WordPress. Добавление контента будет выполнять работу по отправке электронных писем пользователю после того, как их регистрация будет одобрена.
Если вы хотите отправить электронное письмо администратору после того, как регистрация будет одобрена, вы можете написать код на крючке wpau_approve
, Этот хук принимает идентификатор пользователя в качестве параметра.
Таким образом, вы можете написать что-то вроде этого:
add_action ('wpau_approve' , 'send_mail_to_admin_post_approval', 10, 1);
/*
* Sends email to Administrator after user registration is approved
*
* @param int $user_id User id of user whose registration is just approved
*/
function send_mail_to_admin_post_approval($user_id) {
$user = new WP_User($user_id);
$user_login = stripslashes($user->user_login);
$user_email = stripslashes($user->user_email);
$message = sprintf(__('New user registration on your blog %s:'), get_option('blogname')) . "\r\n\r\n";
$message .= sprintf(__('Username: %s'), $user_login) . "\r\n\r\n";
$message .= sprintf(__('E-mail: %s'), $user_email) . "\r\n";
@wp_mail(get_option('admin_email'), sprintf(__('[%s] New User Registration'), get_option('blogname')), $message);
}
Если даже после добавления вышеуказанного кода в ваш плагин или в файл темы functions.php письма не отправляются, то мы рекомендуем установить плагин Журнал электронной почты. После установки этого плагина вы можете просмотреть список всех электронных писем, инициированных функцией wp_mail, на странице с именем «Email Log» в меню «Сервис» в WordPress dashobard. Если вы видите, что ваша электронная почта инициируется wp_mail и не принимается получателями, это может быть связано с вашими настройками SMTP.
Возможно, вам придется включить или установить программное обеспечение SMTP на вашем сервере. Если у вас нет доступа к нему, установите WP Mail SMTP подключи и настрой его. Если подключаемый модуль WP Mail SMTP настроен правильно, получатели должны иметь возможность получать электронные письма, которые запускаются функцией wp_mail после настройки подключаемого модуля.
Надеюсь это поможет 🙂
Других решений пока нет …