我已在WP中实现了自定义登录和注册表单here。用户现在可以注册,但在管理员从后端批准该用户之前无法登录。
我需要为新用户注册实施管理员通知电子邮件,以及用户通知电子邮件管理员从后端批准它。我在我的注册表单中尝试了以下代码来发送电子邮件,但这似乎不起作用。此外,标准电子邮件不断发送。
/ 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);
}
}
对于用户注册批准,我使用的是this插件。
当用户使用我的自定义表单注册时如何发送电子邮件,并在管理员批准时通知用户。
答案 0 :(得分:0)
您可以在WP Approve用户插件的设置页面上设置新注册时发送给用户的电子邮件内容。此插件的设置位于WordPress仪表板的“设置”菜单下。添加内容将在注册批准后向用户发送电子邮件。
如果您想在注册批准后向管理员发送电子邮件,那么您可以在钩子wpau_approve
上编写代码。此Hook接受用户ID作为参数。
所以你可以这样写:
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文件邮件都没有,那么我们建议安装插件Email Log。安装该插件后,您可以在名为'电子邮件日志'的页面上查看由wp_mail函数触发的所有电子邮件列表。在'工具' WordPress dashobard中的菜单。如果您看到,您的电子邮件由wp_mail触发且收件人未收到,则可能是您的SMTP设置出现问题。
您可能必须在服务器上启用或安装SMTP软件。如果您无权访问它,请安装WP Mail SMTP插件并进行配置。如果WP Mail SMTP插件配置正确,收件人应该能够接收配置插件后由wp_mail函数触发的电子邮件。
希望这会有所帮助:)