钩子文档

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

$messagestring
Email message.
$keystring
The activation key.
$user_loginstring
The username for the user.
$user_dataWP_User
WP_User object.

Source

$message = apply_filters( 'retrieve_password_message', $message, $key, $user_login, $user_data );

Changelog

Version Description
4.1.0 Added $user_login and $user_data parameters.
2.8.0 Introduced.

User Contributed Notes

  1. Skip to note 2 content

    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 );