电子邮件中的激活/确认链接错误

时间:2021-12-08 作者:Andrea Alba

我已经创建了一个自定义登录页login.php 在根部内部。(例如:http://www.example.com/login.php)

/*
    LOGIN PAGE.
*/

// Login URL.
function custom_login_url($login_url, $redirect, $force_reauth ) {
    $login_url = home_url( \'login.php\', \'login\' );
    if ( ! empty( $redirect ) ) {
        $login_url = add_query_arg( \'redirect_to\', urlencode( $redirect ), $login_url );
    }
    if ( $force_reauth ) {
        $login_url = add_query_arg( \'reauth\', \'1\', $login_url );
    }
    return $login_url;
}

// Lostpassword URL.
function custom_lostpassword_url( $lostpassword_url, $redirect = \'\') {
    $args = array(
        \'action\' => \'lostpassword\',
    );
    if ( ! empty( $redirect ) ) {
        $args[\'redirect_to\'] = urlencode( $redirect );
    }
    if ( is_multisite() ) {
        $blog_details  = get_blog_details();
        $wp_login_path = $blog_details->path . \'login.php\';
    } else {
        $wp_login_path = \'login.php\';
    }
    $lostpassword_url = add_query_arg( $args, network_home_url( $wp_login_path, \'login\' ) );
    return $lostpassword_url;
}
add_filter( \'lostpassword_url\', \'custom_lostpassword_url\', 20);

// Registration URL.
function custom_registration_url() {
    return home_url( \'login.php\' . \'?action=register\', \'login\' );
}

// Custom redirect admin locations.
function custom_redirect_admin_locations() {
    global $wp_rewrite;
    if ( ! ( is_404() && $wp_rewrite->using_permalinks() ) ) {
        return;
    }
    $admins = array(
        home_url( \'admin\', \'relative\' ),
    );
    if ( in_array( untrailingslashit( $_SERVER[\'REQUEST_URI\'] ), $admins, true ) ) {
        wp_redirect( admin_url() );
        // wp_redirect( home_url( ADASTRA_ADMIN_PAGE) );
        exit;
    }
    $logins = array(
        home_url( \'login\', \'relative\' ),
    );
    if ( in_array( untrailingslashit( $_SERVER[\'REQUEST_URI\'] ), $logins, true ) ) {
        wp_redirect( wp_login_url() );
        exit;
    }
}

// Custom Logout URL.
function custom_logout_url($logout_url, $redirect = \'\') {
    $args = array();
    if ( ! empty( $redirect ) ) {
        $args[\'redirect_to\'] = urlencode( $redirect );
    }
    $logout_url = add_query_arg( $args, home_url( \'login.php\' . \'?action=logout\', \'login\' ) );
    $logout_url = wp_nonce_url( $logout_url, \'log-out\' );
    return $logout_url ;
}

function custom_set_login_url() {
    add_filter( \'login_url\', \'custom_login_url\', 10, 3 );
    add_filter( \'logout_url\', \'custom_logout_url\', 15, 2 );
    add_filter( \'register_url\', \'custom_registration_url\', 30 );
    remove_action( \'template_redirect\', \'wp_redirect_admin_locations\', 1000 );
    add_action( \'template_redirect\', \'custom_redirect_admin_locations\', 1100 );
}
add_action(\'init\', \'custom_set_login_url\', 9999);

现在,所有URL都工作正常,但每次有新用户注册或放弃密码时,他都会收到一封带有两个链接的电子邮件:

指向;“错误”;(又名默认)登录页面:

http://www.example.com/wp-login.php?action=rp&key=rMrHUdWY1NC1eDdHAc4e&login=averagejoe
指向正确登录页的链接:
http://www.example.com/login.php
系统怎么可能不使用我提供的自定义URL,我只需要一个指向自定义登录页的确认/激活链接,如:

http://www.example.com/login.php?action=rp&key=rMrHUdWY1NC1eDdHAc4e&login=averagejoe
不使用插件。

有人能帮我吗?

谢谢

1 个回复
SO网友:birgire

它似乎使用(src):

$message .= network_site_url( "wp-login.php?action=rp&key=$key&login=" . 
            rawurlencode( $user_login ), \'login\' ) . \'&wp_lang=\' . $locale . "\\r\\n\\r\\n";
但不是wp_lostpassword_url(), 很可能是因为额外的争论,比如keywp_lang 还有一个不同的action 价值

你可以看看network_site_urllostpassword_post 操作,即在retrieve_password() 作用

您还可以考虑创建一个core票证,以便在core中进行修改时获得估价。

请注意,有比将php文件添加到WordPress安装的根目录更好的方法,如内容过滤器、短代码和url重写。

通常,所有PHP修改都应该在一个主题/插件/mu插件中。

相关推荐

Permalinks without post type

我使用norebo主题我在打开公文包时使用它链接的格式如下https://www.hshnorm.com/project/fruit-flavored-powder-juice/ 如何删除该单词project成为此格式的链接https://www.hshnorm.com/fruit-flavored-powder-juice/