本站源码全部测试通过,配有前台及后台演示图,绿色安全,希望能对大家有所帮助!
  • 收藏本站
  • 网站地图
  • 发布源码
  • 首 页
  • app源码
  • 小程序源码
  • VPS/云主机
  • 如何修正 WordPress 密码设置链接错误
    时间:2020-03-06 08:58:09来源:模板之家 作者:转载大师 下载:87666 次

    如何修正

    当用户注册或者忘记密码获取新密码时WordPress会自动向用户邮箱中发送一个验证链接地址,用户通过打开这个链接设置密码,不过经常发现这个链接直接打开后,并不是设置密码的正确链接。

    这个问题的并不是WordPress的原因,正常WordPress设置密码的链接地址是没有超链接的,而是QQ邮箱自作聪明为个链接地址加上了超链接,并把本不是链接地址内容的<>符号也加了进去,结果造成链接错误,貌似只有大家常用的QQ邮箱有此问题。这是一个老生常谈问题,网上解决办法比比皆是,不过都是千篇一律,充分体现了天下文章一大抄。

    下面是我的解决方法,以WordPress 5.3.2为例:

    一、最简单的方法

    修改WordPress程序文件删除代码中的<>符号,

    修正忘记密码获取新密码链接

    打开WordPress程序根目录的wp-login.php文件,将大约417行的:

    1

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

    改为:

    1

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

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

    修正用户注册设置密码链接

    打开WordPress程序wp-includes目录中的pluggable.php文件,将大约2003行的:

    1

    $message .= < . network_site_url( wp-login.php?action=rp&key=$key&login= . rawurlencode( $user->user_login ), login ) . > ;

    改为

    1

    $message .= . network_site_url( wp-login.php?action=rp&key=$key&login= . rawurlencode( $user->user_login ), login ) . ;

    也是只需要把代码中前后<>符号去掉即可。

    缺点:升级WordPress程序后,需要再次修改。

    二、一劳永逸的方法

    这也是本文的重点,也是应主题用户的要求,添加到目前主题中的方法,这里分享一下。

    将下面代码添加到当前主题函数模板functions.php中即可。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    // 修正忘记密码获取新密码链接

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

    $message .= __(To set your password, visit the following address:) . ;

    $message .= . network_site_url(wp-login.php?action=rp&key=$key&login= . rawurlencode($user->user_login), login) . ;

    $wp_new_user_notification_emailmessage = $message;

    return $wp_new_user_notification_email;

    }

    网上能找到修正重置密码链接的方法,不过代码略显拖沓,本文的方法只一句关键代码解决。

    至于修正用户注册设置密码链接,经过重写邮件函数解决,貌似代码还有精简的余地,以后再研究了。

    优点:一劳永逸,不会因为WordPress程序的频繁升级而再次修改。


    转载请注明来源:如何修正 WordPress 密码设置链接错误
    本文永久链接地址:bencandy.php?fid=34&id=15713
    本文标签:

    版权声明:
    —— 本文内容由互联网用户自发贡献, 本站不拥有所有权, 不承担相关法律责任, 如果发现本站有涉嫌抄袭的内容, 欢迎发送邮件至 :
    —— 1034252225@qq.com 举报, 并提供相关证据, 一经查实, 本站将立刻删除涉嫌侵权内容。

    QQ在线客服

    服务热线

    织梦建站咨询