retrieve_password_message
云策文档标注
概述
retrieve_password_message 是一个 WordPress 过滤器钩子,用于自定义密码重置邮件的正文内容。开发者可以通过此钩子修改邮件消息,若过滤后消息为空,则不会发送密码重置邮件。
关键要点
- 过滤器名称:retrieve_password_message
- 参数:$message(字符串,邮件消息)、$key(字符串,激活密钥)、$user_login(字符串,用户名)、$user_data(WP_User 对象)
- 用途:过滤密码重置邮件的消息体,允许自定义邮件内容
- 注意事项:过滤后的消息若为空字符串,将阻止邮件发送
- 版本历史:从 WordPress 2.8.0 引入,4.1.0 版本添加了 $user_login 和 $user_data 参数
代码示例
/**
* Filter password reset request email's body.
*
* @param string $message
* @param string $key
* @param string $user_login
* @return string
*/
function wpdocs_retrieve_password_message( $message, $key, $user_login ) {
$site_name = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );
$reset_link = network_site_url( "wp-login.php?action=rp&key=$key&login=" . rawurlencode( $user_login ), 'login' );
// Create new message
$message = __( 'Someone has requested a password reset for the following account:' . $user_login, 'text_domain' ) . "n";
$message .= sprintf( __( 'Site Name: %s' ), network_home_url( '/' ) ) . "n";
$message .= sprintf( __( 'Username: %s', 'text_domain' ), $user_login ) . "n";
$message .= __( 'If this was a mistake, just ignore this email and nothing will happen.', 'text_domain' ) . "n";
$message .= __( 'To reset your password, visit the following address:', 'text_domain' ) . "n";
$message .= $reset_link . "n";
return $message;
}
add_filter( 'retrieve_password_message', 'wpdocs_retrieve_password_message', 20, 3 );
原文内容
Filters the message body of the password reset mail.
Description
If the filtered message is empty, the password reset email will not be sent.
Parameters
Source
$message = apply_filters( 'retrieve_password_message', $message, $key, $user_login, $user_data );
Skip to note 2 content
Muhammad Arslan
You have to add the following piece of code into your Child’s Theme file “functions.php” and update the file.
/** * Filter password reset request email's body. * * @param string $message * @param string $key * @param string $user_login * @return string */ function wpdocs_retrieve_password_message( $message, $key, $user_login ) { $site_name = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES ); $reset_link = network_site_url( "wp-login.php?action=rp&key;=$key&login;=" . rawurlencode( $user_login ), 'login' ); // Create new message $message = __( 'Someone has requested a password reset for the following account:' . $user_login, 'text_domain' ) . "n"; $message .= sprintf( __( 'Site Name: %s' ), network_home_url( '/' ) ) . "n"; $message .= sprintf( __( 'Username: %s', 'text_domain' ), $user_login ) . "n"; $message .= __( 'If this was a mistake, just ignore this email and nothing will happen.', 'text_domain' ) . "n"; $message .= __( 'To reset your password, visit the following address:', 'text_domain' ) . "n"; $message .= $reset_link . "n"; return $message; } add_filter( 'retrieve_password_message', 'wpdocs_retrieve_password_message', 20, 3 );