• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Оповещение о регистрации нового пользователя

nnetcat

Новичок
Добрый день.
WordPress 4.3 с плагином WooCommerce
Столкнулся с проблемой - не приходят сообщения на почту админу сайта о регистрации новых пользователей.
Сообщения о новых заказах, комментариях и пр. приходят без проблем. Так же приходит сообщение пользователю о успешной регистрации на сайте с ссылкой на страницу аккаунта, а вот админу письма не приходят.
pluggable.php без изменений
PHP:
function wp_new_user_notification( $user_id, $notify = '' ) {
    global $wpdb;
    $user = get_userdata( $user_id );

    // The blogname option is escaped with esc_html on the way into the database in sanitize_option
    // we want to reverse this for the plain text arena of emails.
    $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);

    $message  = sprintf(__('New user registration on your site %s:'), $blogname) . "\r\n\r\n";
    $message .= sprintf(__('Username: %s'), $user->user_login) . "\r\n\r\n";
    $message .= sprintf(__('E-mail: %s'), $user->user_email) . "\r\n";

    @wp_mail(get_option('admin_email'), sprintf(__('[%s] New User Registration'), $blogname), $message);

    if ( 'admin' === $notify || empty( $notify ) ) {
        return;
    }

Подскажите, пожалуйста, в чем может быть причина?
 

searchingman

Гуру
Местный
Смотрите логи почтовой службы. Если сервер у хостера отправляет письма, то смотрите не попадают ли они в спам.
 

nnetcat

Новичок
Где посмотреть логи? В спаме пусто.

Может как-то можно переписать эту функцию? или может есть какой-нить плагин который позволяет это настроить или к примеру дублировать сообщения на несколько адресов?
 
Последнее редактирование:

nnetcat

Новичок
Пробовал добавить этот код в function.php
PHP:
1
function wp_new_user_notification($user_id, $plaintext_pass = '') {
2
    $user = get_userdata( $user_id );
3
4
    // Название сайта получаем с помощью esc_html из базы данных
5
    $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);
6
7
    $message  = sprintf(__('Регистрация нового пользователя на вашем сайте %s:'), $blogname) . "\r\n\r\n";
8
    $message .= sprintf(__('Имя пользователя: %s'), $user->user_login) . "\r\n\r\n";
9
    $message .= sprintf(__('E-mail: %s'), $user->user_email) . "\r\n";
10
11
    @wp_mail(get_option('admin_email'), sprintf(__('[%s] Регистрация нового пользователя'), $blogname), $message);
12
13
    if ( empty($plaintext_pass) )
14
        return;
15
16
    $message  = sprintf(__('Имя пользователя: %s'), $user->user_login) . "\r\n";
17
    $message .= sprintf(__('Пароль: %s'), $plaintext_pass) . "\r\n";
18
    $message .= 'Для входа в административную панель, пожалуйста, используйте следующий адрес ' . wp_login_url() . "\r\n";
19
20
    wp_mail($user->user_email, sprintf(__('[%s] Ваше имя пользователя и пароль'), $blogname), $message);
21
22
}

но безрезультатно.
 

DiZeR

Опытный
Местный
Из банального: Надеюсь мыло админа не на xxx@mail.ru, а на info@sait.ru
- пробовали менять мыло админа?
- одинаковое мыло стоит в настройках WP и WOO (админа)?
- можно попробовать любой плагин SMTP для WP
 

nnetcat

Новичок
Из банального: Надеюсь мыло админа не на xxx@mail.ru, а на info@sait.ru
- пробовали менять мыло админа?
- одинаковое мыло стоит в настройках WP и WOO (админа)?
- можно попробовать любой плагин SMTP для WP

Так точно, мыло вида info@sait.ru.
- пробовали - на любую из указанных почт приходят все уведомления кроме регистрации нового юзера.
- одинаковое.
- пробовал несколько разных - приходят все уведомления кроме регистрации нового юзера.

Все указывает на то, что эти уведомления просто отключены но где??
 

nnetcat

Новичок
Выясняются новые подробности:
Владелец сайта говорит что к нему за раз добавилось штук 10 пользователей с именами вида "gfui677GY865" - но не одного уведомления о их регистрации не было и собственно после этого они(сообщения) вовсе перестали приходить.
Может кто сталкивался? Где копать?

ПС. Я в php не силен, дядьки с опытом подскажите - может можно куда-нить добавить что-то вроде mailto на "жестко" привязанный адрес с sprintf(__('[%s] New User Registration')
 

searchingman

Гуру
Местный
Владелец сайта говорит что к нему за раз добавилось штук 10 пользователей с именами вида "gfui677GY865" - но не одного уведомления о их регистрации не было и собственно после этого они(сообщения) вовсе перестали приходить.
Скорее всего Вас спамят.
 

nnetcat

Новичок
Решил проблему (может кому поможет):

в customer-new-account.php в конец добавляем:
<?php do_action('new_customer_registered', $user_login );?>

В function.php темы добавляем:
function new_customer_registered_send_email_admin($user_login){
ob_start();
do_action('woocommerce_email_header','New customer registered');
$email_header = ob_get_clean();
ob_start();
do_action('woocommerce_email_footer');
$email_footer = ob_get_clean();

woocommerce_mail(
get_bloginfo('admin_email'),
get_bloginfo('name').' - New customer registered',
$email_header.'<p>The user '.esc_html( $user_login ).' is registered to the website</p>'.$email_footer
);
}
add_action('new_customer_registered','new_customer_registered_send_email_admin');

Только не могу понять как сделать так чтобы вместо user_login приходил user_email - все перепробовал не получается... подскажите, пожалуйста.
 
  • Like
Реакции: D&B

anarmus

Новичок
Для тех, кто будет в будущем находить эту тему.
WC сам отключает эти уведомления. Разработчики считают, что они неважны в ИМ.
Для включения не нужно придумывать сложных велосипедов, просто вешайте стандартное wp уведомление на хук woocommerce_created_customer, например так:

PHP:
function wс_new_user_notification($user_id)
{
    wp_send_new_user_notifications($user_id, 'admin');
}
add_action('woocommerce_created_customer', 'wс_new_user_notification');

Или в любом другом месте, где вы (вдруг) сами регистрируете пользователя.
 

dim70

Опытный
Для тех, кто будет в будущем находить эту тему.
WC сам отключает эти уведомления. Разработчики считают, что они неважны в ИМ.
Для включения не нужно придумывать сложных велосипедов, просто вешайте стандартное wp уведомление на хук woocommerce_created_customer, например так:

PHP:
function wс_new_user_notification($user_id)
{
    wp_send_new_user_notifications($user_id, 'admin');
}
add_action('woocommerce_created_customer', 'wс_new_user_notification');

Или в любом другом месте, где вы (вдруг) сами регистрируете пользователя.
Здравствуйте. Я правильно понимаю, что предложенный Вами код будет работать (приходить уведомление админу о регистрации нового пользователя на сайте) при условии, если на сайте новый пользователь будет регистрироваться в роли клиента (customer)? А если будет иная роль? Например продавец (seller)?
 
Сверху Снизу