是否可以更改此默认电子邮件模板?我还想更改主题和发件人。
编辑:对于任何感兴趣的人,这里有一个插件解决方案。
#1 楼
使用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定义(即默认值)。必须先加载自定义版本,然后才能加载,这意味着您必须将其加载到自定义插件文件中。
#2 楼
对于2018年及之后的用户:自WordPress 4.9.0起,您可以使用新的过滤器(不再需要插件):
wp_new_user_notification_email-定制发送给User
的电子邮件
wp_new_user_notification_email_admin-定制发送给Admin的电子邮件
发送给Admin的电子邮件的示例(您可以将其粘贴到主题的功能中。 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过滤器。有兴趣的人可以查看wp_new_user_notification()的完整文档和源代码。
– Pete
18年1月10日在3:42
谢谢Pete,它看起来像是4.9.0中引入的,看起来是一个更好的解决方案。
– Edu Wass
18年1月10日在12:24
你好我也在使用WP Approve User插件。目前,他们在注册时会发送标准电子邮件。不应该。应该说必须先批准帐户。我们批准用户可以选择设置帐户批准时间和工作时间的文本。这是之前的预批准步骤。我会使用您提到的这些新过滤器吗?
–安德鲁·特拉克(Andrew Truckle)
19/12/8在8:32
#3 楼
这不适用于functions.php。您需要将此代码放在插件中。如果您现在不打算为此创建插件,请使用此链接。
别忘了使用在此更新此功能表的代码。
评论
只是基于对wp_new_user_notification()函数添加过滤器钩子的澄清。此答案专门引用了wp_new_user_notification()的重写作为可插入函数。但是,这不适用于使用wp_new_user_notification_email和wp_new_user_notification_email_admin过滤器。这些可以在您的functions.php文件(或特定于站点的插件)中使用。
– Butlerblog
19/12/9在13:24
评论
@Bainternet我似乎无法正常工作,我已将其添加到我的功能文件中,但是标准电子邮件一直在发送。我在多站点上,但这没关系吧?
–user2015
2011年7月2日,下午2:33
现在就可以了,它似乎只能作为单独的插件工作,而不能将其添加到functions.php文件中。现在它可以完美地工作了,再次感谢您提供的出色代码!
–user2015
2011年7月2日,下午3:03
它也适用于多站点吗?我可以看到多站点在ms-functions.php中具有一堆用于发送通知电子邮件的功能。
–西西尔
13年7月28日在7:42
我认为多站点使用wpmu_signup_user_notification。
–维克
2014年11月25日在21:43
这个答案已经有好几年了。接受的答案对我不起作用。 (将其添加到functions.php中与新用户注册时发送的任何电子邮件没有任何区别。)我是否应该发布一个新问题?
–基特·约翰逊(Kit Johnson)
2015年4月21日在11:23