Как изменить регистрационный адрес электронной почты по умолчанию?(плагин и / или не плагин)
3 ответ
- голосов
-
- 2011-04-21
Новое электронное письмо пользователя отправляется с помощью функции
wp_new_user_notification()
. Эта функция является подключаемой,что означает,что вы можете перезаписать ее:// 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); } }
Примечание. Переопределение подключаемых функций нельзя выполнить в файлеfunctions.php темы. Подключаемый файл WP уже загружен к этому моменту,поэтому функция будет определена WP (то есть по умолчанию). Ваша пользовательская версия должна загрузиться до этого,что означает,что вы должны загрузить ее в файл пользовательского плагина.
The new user email is sent using the
wp_new_user_notification()
function. This function is pluggable, which means that you can overwrite it:// 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); } }
Note: Overriding pluggable functions cannot be done in the theme functions.php file. WP's pluggable file is already loaded by that point so the function would be defined by WP (i.e. the default). Your custom version must load before this happens, which means you must load it in a custom plugin file.
-
@Bainternet Я не могу заставить это работать,я добавил это в свой файл функций,но стандартная электронная почта продолжает отправляться.Я использую мультисайт,но это не имеет значения,верно?@Bainternet I cannot seem to get this to work, I have added this to my functions file, but the standard email keeps sending. I'm on multisite, but that shouldn't matter, right?
-
Хорошо,теперь он работает как отдельный плагин,а не когда вы добавляете его в свой файл `functions.php`.Теперь он работает отлично,еще раз спасибо за этот красивый фрагмент кода!OK got it now, it only seems to work as a separate plugin, not when you add it to your `functions.php` file. Now it works perfect, thanks again for that nice piece of code!
-
Это работает и для мультисайта?Я вижу,что мультисайт имеет множество функций внутриms-functions.php для отправки уведомлений по электронной почте.Does it works for multisite too? I can see multisite has bunch of functions inside ms-functions.php for sending notification email.
- 0
- 2013-07-28
- Sisir
-
Думаю,мультисайт использует wpmu_signup_user_notification.Multisite uses `wpmu_signup_user_notification` I think.
- 0
- 2014-11-25
- Wyck
-
Этому ответу несколько лет.Принятый ответ мне не подходит.(Добавление его вfunctions.php не имеет никакого значения для писем,отправляемых при регистрации нового пользователя.) Следует ли мне публиковать новый вопрос?This answer is several years old. The accepted answer doesn't work for me. (Adding it to functions.php has makes no difference to any of the emails sent when a new user registers.) Should I post a new question?
- 0
- 2015-04-21
- Kit Johnson
-
В конце концов,я нашел код,который работал у меня в этом руководстве: http://www.webtipblog.com/change-wordpress-user-registration-welcome-email/In the end I found some code that worked for me in this tutorial: http://www.webtipblog.com/change-wordpress-user-registration-welcome-email/
- 0
- 2015-04-24
- Kit Johnson
-
Обратимся к комментариям о том,что он не работает вfunctions.php,потому что вы не можете загрузить пользовательскую версию подключаемой функции так поздно.Это не имеет ничего общего со старостью ответа.Вы должны определить свою пользовательскую функцию до загрузки версии WP.При загрузке вfunctions.php версия плагина по умолчанию уже определена.Вы должны загрузить его * как плагин * (нет никакой разницы между предоставленным ответом и опубликованным комплектом ссылок,кроме дополнительного шага загрузки его как плагина).To address the comments regarding it not working in functions.php, that's because you can't load a custom version of a pluggable function that late. It has nothing to do with the answer being old. You must define your custom function before the WP version is loaded. When loaded in functions.php, the default version of the plugin is already defined. You have to load it *as a plugin* (there's no difference between the answer given and the link Kit posted other than the extra step of loading it as a plugin).
- 0
- 2019-12-09
- butlerblog
-
- 2018-01-03
Для пользователей начиная с 2018 года:
Начиная с WordPress 4.9.0 есть новые фильтры,которые вы можете использовать для этого (больше нет необходимости в плагине):
- wp_new_user_notification_email - настроить электронную почту,отправляемую пользователю
- wp_new_user_notification_email_admin - настроить электронную почту,отправляемую администратору.
Пример использования в электронном письме,отправленном администратору (вы можете вставить его в functions.php вашей темы):
add_filter( 'wp_new_user_notification_email_admin', 'custom_wp_new_user_notification_email', 10, 3 ); function custom_wp_new_user_notification_email( $wp_new_user_notification_email, $user, $blogname ) { $wp_new_user_notification_email['subject'] = sprintf( '[%s] New user %s registered.', $blogname, $user->user_login ); $wp_new_user_notification_email['message'] = sprintf( "%s ( %s ) has registerd to your blog %s.", $user->user_login, $user->user_email, $blogname ); return $wp_new_user_notification_email; }
For 2018 and onwards users:
Since WordPress 4.9.0 there are new filters you can use for this (no need for a plugin anymore):
- wp_new_user_notification_email - customise email sent to User
- wp_new_user_notification_email_admin - customise email sent to Admin
Usage example on email sent to Admin (you can paste this in your theme's functions.php ):
add_filter( 'wp_new_user_notification_email_admin', 'custom_wp_new_user_notification_email', 10, 3 ); function custom_wp_new_user_notification_email( $wp_new_user_notification_email, $user, $blogname ) { $wp_new_user_notification_email['subject'] = sprintf( '[%s] New user %s registered.', $blogname, $user->user_login ); $wp_new_user_notification_email['message'] = sprintf( "%s ( %s ) has registerd to your blog %s.", $user->user_login, $user->user_email, $blogname ); return $wp_new_user_notification_email; }
-
В качестве альтернативы можно использовать фильтры wp_new_user_notification_email и wp_new_user_notification_email_admin.Желающие могут ознакомиться с [полной документацией и исходным кодом] (https://developer.wordpress.org/reference/functions/wp_new_user_notification/) для `wp_new_user_notification ()`.Alternatively one could use the `wp_new_user_notification_email` and `wp_new_user_notification_email_admin` filters. Those interested can check out the [full documentation and source code](https://developer.wordpress.org/reference/functions/wp_new_user_notification/) for `wp_new_user_notification()`.
- 1
- 2018-01-10
- Pete
-
Спасибо,Пит,похоже,что это было введено в 4.9.0 и похоже на лучшее решение.Thanks Pete, looks like that was introduced in 4.9.0 and looks like a better solution.
- 0
- 2018-01-10
- Edu Wass
-
Привет.Я также использую плагин WP Approve User. На данный момент он отправляет стандартное электронное письмо при регистрации.Не должно быть.Он должен сказать,что учетная запись должна быть сначала одобрена. Мы утверждаем,что пользователь имеет возможность установить текст,когда учетная запись была утверждена и работает правильно.Это предварительно утвержденный шаг. Могу ли я использовать упомянутые вами новые фильтры?Hi. I am also using the WP Approve User plugin. At the moment it sends the standard email when they sign up. It shouldn’t. It should say that account needs to be approved first. We Approve User has option to set the text for when the account has been approved and that is working right. It is the pre approved step before. Do I use these new filters you mentioned?
- 0
- 2019-12-08
- Andrew Truckle
-
- 2015-09-17
Это не будет работать сfunctions.php.Вам нужно поместить этот код в плагин.
Если вы сейчас не собираетесь создавать для этого плагин,просто используйте ссылка .
Не забудьте взять код обновления этой функции здесь .
-
Просто пояснение,основанное на добавлении перехватчиков фильтров в функцию wp_new_user_notification ().В этом ответе конкретно упоминается переопределение wp_new_user_notification () как подключаемой функции.Однако это ** не применяется ** к использованию фильтров wp_new_user_notification_email и wp_new_user_notification_email_admin.Их можно использовать в вашем файлеfunctions.php (или [плагине для конкретного сайта] (https://wpbitz.com/how-to-create-a-site-specific-plugin/)).Just a point of clarification based on the addition of filter hooks to the `wp_new_user_notification()` function. This answer specifically references the overriding of `wp_new_user_notification()` as a pluggable function. However, this **does not apply** to using the `wp_new_user_notification_email` and `wp_new_user_notification_email_admin` filters. Those can be used in your functions.php file (or [a site specific plugin](https://wpbitz.com/how-to-create-a-site-specific-plugin/)).
- 0
- 2019-12-09
- butlerblog
После регистрации нового пользователя WP отправляет электронное письмо с логином/паролем и ссылкой на страницу входа.
Есть ли способ изменить этот шаблон электронной почты по умолчанию?Я также хочу изменить тему и отправителя.
Изменить: для всех,кого это интересует, здесь есть плагин.