2

我是新手wordpress。我目前正在注册和登录。我有一个页面限制 url let http://xyz.com/abc。此网址需要登录/注册。

我需要当用户注册或登录时,它应该被重定向到这个先前的 url。

在登录中,我添加了以下钩子:

一个

add_filter('login_redirect', 'redirect_previous_page', 10);

function redirect_previous_page(){

    global $user;
    $request = $_SERVER["HTTP_REFERER"];

    if ( in_array( $user->roles[0], array( 'administrator') ) ) {

        return admin_url();
        return $redirect_to;

    } elseif ( in_array( $user->roles[0], array( 'subscriber') ) ) {

        return $request;
        return $redirect_to;

    } 

}

它对我有用,但我没有得到成功注册后如何在此 URL 上重定向。我在登录页面上有注册链接

4

4 回答 4

7
if ( (isset($_GET['action']) && $_GET['action'] != 'logout') || (isset($_POST['login_location']) && !empty($_POST['login_location'])) ) {
    add_filter('login_redirect', 'my_login_redirect', 10, 3);
    function my_login_redirect() {
        $location = $_SERVER['HTTP_REFERER'];
        wp_safe_redirect($location);
        exit();
    }
}
于 2015-01-12T18:09:26.600 回答
7

文档中所述,您可以使用:<?php wp_get_referer() ?>获取用户在注销之前或登录之后访问的最后一个 URL。

于 2015-04-10T15:41:52.707 回答
0

这是一种粗略的方法,但是您可以在此处创建$_SESSION['your_registration_referrer']粘贴,$_SERVER["HTTP_REFERER"]并在注册后重定向到此 url。

于 2013-08-06T12:17:42.787 回答
0

我需要当用户注册或登录时,它应该被重定向到这个先前的 url。

如果您不需要某些页面的永久重定向,您可以使用重定向wp_login_url()

// current page with get parameters
$redirect_after_login = home_url( add_query_arg( null, null ) ); 
// or just
$redirect_after_login = get_the_permalink();
$link_to_login = wp_login_url( $redirect_after_login );

比您可以使用此链接wp_safe_redirect()或只是在某处回显

这是登录后重定向的更正代码:

add_filter( 'login_redirect', 'redirect_previous_page', 10, 1 );
function redirect_previous_page( $redirect_to ) {
    // don't change url if current user is admin or if user inside admin page
    if ( is_admin() || current_user_can( 'administrator' ) ) {
        return $redirect_to;
    }
    // also, we can check is current user has some role
    // if (current_user_can( 'subscriber' ))
    
    // change redirect url to previus page for non-administrators
    $redirect_to= wp_get_referer();

    // referer can return 'false' so add fallback
    return $redirect_to ? $redirect_to : home_url();
}

PS不幸的是,没有人写过两次“回归”。第二个“返回”不发送,因为无法实现

于 2022-02-20T08:18:34.177 回答