要回答您的特定问题,“如何修改默认重置(丢失)密码电子邮件文本”,答案是使用retrieve_password_message
滤器最终,这可能是解决你问题的一种方法。
但我认为你需要再深入一点,弄清楚到底发生了什么。在您的问题中,您询问了有关修改“默认重置密码电子邮件文本”的问题,但您实际拥有的并不是真正的默认设置。如果是,URL字符串将全部放在一起,而不是像现在这样分开。
我将首先停用所有插件,并从使用WP默认主题的任何主题切换。换句话说,这是一个非常基本的安装,没有干扰。那就试试吧。如果你没有得到同样的结果,那么在某个地方有什么东西把URL弄乱了。有用于的筛选器retrieve_password_message
和network_site_url
这可能会允许某些过滤器功能在某个地方导致您的问题。禁用插件和使用基本主题而不进行修改应该会让您发现情况是否如此。
最终,如果您无法跟踪它,则在retrieve_password_message
过滤器将为您解决任何问题。下面的过滤器复制默认消息。它包括一个潜在的URL生成解决方案,以防某个链接到network_site_url
是罪魁祸首。如果是,请使用备选方案,并按指示对域进行硬编码。
add_filter( \'retrieve_password_message\', \'my_retrieve_password_message\', 10, 4 );
function my_retrieve_password_message( $message, $key, $user_login, $user_data ) {
// Start with the default content.
$site_name = wp_specialchars_decode( get_option( \'blogname\' ), ENT_QUOTES );
$message = __( \'Someone has requested a password reset for the following account:\' ) . "\\r\\n\\r\\n";
/* translators: %s: site name */
$message .= sprintf( __( \'Site Name: %s\' ), $site_name ) . "\\r\\n\\r\\n";
/* translators: %s: user login */
$message .= sprintf( __( \'Username: %s\' ), $user_login ) . "\\r\\n\\r\\n";
$message .= __( \'If this was a mistake, just ignore this email and nothing will happen.\' ) . "\\r\\n\\r\\n";
$message .= __( \'To reset your password, visit the following address:\' ) . "\\r\\n\\r\\n";
$message .= \'<\' . network_site_url( "wp-login.php?action=rp&key=$key&login=" . rawurlencode( $user_login ), \'login\' ) . ">\\r\\n";
/*
* If the problem persists with this filter, remove
* the last line above and use the line below by
* removing "//" (which comments it out) and hard
* coding the domain to your site, thus avoiding
* the network_site_url() function.
*/
// $message .= \'<http://yoursite.com/wp-login.php?action=rp&key=\' . $key . \'&login=\' . rawurlencode( $user_login ) . ">\\r\\n";
// Return the filtered message.
return $message;
}