使用ADD_FILTER定制新用户通知电子邮件有什么问题?

时间:2018-12-22 作者:Sh.Dehnavi

当新用户注册时,会收到确认电子邮件,上面写着:

Username: testuser To set your password, visit the following address:  
但我想对其进行自定义,因此我将以下代码添加到functions.php
但它不起作用。默认电子邮件仍会发送。

我正在使用WordPress 4.9.9

<?php
add_filter( \'wp_new_user_notification_email\', \'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] Your username and password\' ), $blogname, $user->user_login );
        
$key = get_password_reset_key( $user );
$message = sprintf(__(\'Welcome to our website,\')) . "\\r\\n\\r\\n";
$message .= \'To set your password, visit the following address:\' . "\\r\\n\\r\\n";
$message .= network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user->user_login), \'login\') . "\\r\\n\\r\\n";
$message .= "After this you can enjoy our website!" . "\\r\\n\\r\\n";
$message .= "Kind regards," . "\\r\\n";
$message .= "Support Team" . "\\r\\n";
$wp_new_user_notification_email[\'message\'] = $message;
        
$wp_new_user_notification_email[\'headers\'] = \'From: MyName<[email protected]>\'; 
// this just changes the sender name and email to whatever you want (instead of the default WordPress <[email protected]>
        
return $wp_new_user_notification_email;
}
?>
为什么代码不起作用?你能帮帮我吗?

1 个回复
最合适的回答,由SO网友:butlerblog 整理而成

实际上,您所使用的代码没有任何问题(我按照上面的代码进行了测试,效果很好)。

但您必须考虑一些其他可能性:

wp_new_user_notification() 函数是一个可插入函数。因此,它可以被插件或自定义代码替代。如果它被替换,则该函数的自定义版本可能缺少wp_new_user_notification_email 过滤器挂钩wp_new_user_notification().

查看主题,确保这是wp_new_user_notification_email 过滤器

相关推荐

Register email as username

我在Wordpress多站点中使用Wordpress 4.9.4,我需要允许用户使用其电子邮件地址作为用户名进行注册。查看代码,我发现阻止我完成的是ms函数。php有一个正则表达式过滤除a-z以外的其他字符的用户名,因此当电子邮件是用户名时,我会得到“用户名只能包含小写字母(a-z)和数字。”我在ms函数中更改了该正则表达式。php,它工作得很好。现在我的问题是,我不想每次更新wordpress时都重新编码wpmu\\u validate\\u user\\u signup函数。在这个问题上有什么好的做法