如何修正 WordPress 密码设置链接错误-WordPress

资源魔 44 0

当用户注册或许遗记明码猎取新明码时WordPress会主动向用户邮箱中发送一个验证链接地点,用户经过关上这个链接设置明码,不外常常发现这个链接间接关上后,并非设置明码的正确链接。

这个成绩的并非WordPress的缘由,失常WordPress设置明码的链接地点是不超链接的,而是QQ邮箱自作聪慧为个链接地点加之了超链接,并把本没有是链接地点内容的<>符号也加了出来,后果造成链接谬误,貌似只有各人罕用的QQ邮箱有此成绩。这是一个陈词滥调成绩,网上处理方法亘古未有,不外都是陈旧见解,充沛表现了全国文章一年夜抄。

上面是我的处理办法,以WordPress 5.3.2为例:

1、最简略的办法

修正WordPress顺序文件删除了代码中的<>符号,

修改遗记明码猎取新明码链接

关上WordPress顺序根目次的wp-login.php文件,将约莫417行的:

$message .= '<' . network_site_url( "wp-login.php?action=rp&key=$key&login=" . rawurlencode( $user_login ), 'login' ) . ">\r\n";

改成:

$message .= '' . network_site_url( "wp-login.php?action=rp&key=$key&login=" . rawurlencode( $user_login ), 'login' ) . "\r\n";

只是把代码中先后<>符号去掉。

修改用户注册设置明码链接

关上WordPress顺序wp-includes目次中的pluggable.php文件,将约莫2003行的:

$message .= '<' . network_site_url( "wp-login.php?action=rp&key=$key&login=" . rawurlencode( $user->user_login ), 'login' ) . ">\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";

也是只要要把代码中先后<>符号去掉便可。

缺陷:晋级WordPress顺序后,需求再次修正。

2、一劳永逸的办法

这也是本文的重点,也是应主题用户的要求,增加到今朝主题中的办法,这里分享一下。

将上面代码增加到以后主题函数模板functions.php中便可。

// 修改遗记明码猎取新明码链接
add_filter('retrieve_password_message', 'zm_reset_password_message_amend', 99, 1);
function zm_reset_password_message_amend($string) {
return preg_replace('/<(' . preg_quote(network_site_url(), '/') . '[^>]*)>/', '\1', $string);
}
 
// 修改用户注册设置明码链接
add_filter( 'wp_new_user_notification_email' , 'zm_user_notification_email_amend', 10, 3 );
function zm_user_notification_email_amend( $wp_new_user_notification_email, $user, $user_email ) {
global $wpdb, $wp_hasher;
$key = wp_generate_password( 20, false );
do_action( 'retrieve_password_key', $user->user_login, $key );
if ( empty( $wp_hasher ) ) {
require_once ABSPATH . WPINC . '/class-phpass.php';
$wp_hasher = new PasswordHash( 8, true );
}
$hashed = time() . ':' . $wp_hasher->HashPassword( $key );
$wpdb->update( $wpdb->users, array( 'user_activation_key' => $hashed ), array( 'user_login' => $user->user_login ) );
$switched_locale = switch_to_locale( get_user_locale( $user ) );
$message = sprintf(__('Username: %s'), $user->display_name) . "\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";
$wp_new_user_notification_email['message'] = $message;
return $wp_new_user_notification_email;
}

网上能找到修改重置明码链接的办法,不外代码略显疲塌,本文的办法只一句要害代码处理。

至于修改用户注册设置明码链接,通过重写邮件函数处理,貌似代码另有精简的余地,当前再钻研了。

优点:一劳永逸,没有会由于WordPress顺序的频仍晋级而再次修正。

更多编程相干内容,请存眷资源魔编程入门栏目!

以上就是若何修改 WordPress 明码设置链接谬误的具体内容,更多请存眷资源魔其它相干文章!

标签: WordPress wordpress教程 wordpress自学 wordpress技术

抱歉,评论功能暂时关闭!