WordPress登录redirect_to不起作用

Posted

技术标签:

【中文标题】WordPress登录redirect_to不起作用【英文标题】:WordPress Login redirect_to not working 【发布时间】:2013-12-19 20:21:36 【问题描述】:

我正在使用 WordPress 3.7.1 开发一个网站,并尝试在登录时通过 redirect_to URL 参数重定向用户。

我已经验证登录表单后端看到了redirect_to GET 参数,并且登录提交包含redirect_to POST 值……但这就是不起作用的地方。

已删除链接和用户凭据

登录后(对于本文中提供的我的管理员帐户和订阅者帐户),用户将被带到 WP 仪表板,而不是 redirect_to 参数中的 URL。

我确实设置了 allowed_redirect_hosts,并在自定义插件文件中使用以下代码(几乎就是这样)。

add_filter( 'allowed_redirect_hosts' , 'glue_allowed_redirect_hosts' , 10 );
function glue_allowed_redirect_hosts($content)
    $content[] = 'app.realestategradschool.com';
    $content[] = 'dev-app.realestategradschool.com';
    $content[] = 'app.realestategradschool.local';
    return $content;

我已禁用所有其他插件以尝试解决此问题。

编辑:我不能使用 login_redirect,因为我不希望重定向所有登录...仅当访问者从其他站点发送到登录页面时(使用 oAuth 登录...oAuth 有效...只是不是重定向)

编辑:工作解决方案:

function glue_login_redirect($redirect_to,$request='',$user=null)
    //using $_REQUEST because when the login form is submitted the value is in the POST
    if(isset($_REQUEST['redirect_to']))
        $redirect_to = $_REQUEST['redirect_to'];
    
    return $redirect_to;

add_filter('login_redirect','glue_login_redirect',999);

【问题讨论】:

我在该插件文件中的另一件事是 wp_validate_redirect 的声明,我从 WordPress CORE 复制代码并简单地添加了一个调试语句。无论这段代码是否完好无损,我的问题仍然存在。 为什么不用login_redirect,你已经用了吗? 您的login_redirect 代码对我不起作用。 自此发布以来已经有几年了,从那时起事情可能会发生变化。 【参考方案1】:

您可以使用login_redirect 过滤器。看这里 http://codex.wordpress.org/Plugin_API/Filter_Reference/login_redirect

我想这就是你要找的。​​p>

这通常会重定向所有登录。为了能够仅在需要时进行重定向,您可以在 URL 中使用查询字符串参数。检查参数是否存在重定向。

【讨论】:

这个解决方案强制所有登录被重定向......我只想要其中的一些。我使用此信息编辑了我的原始问题。 因此,您可以在login_redirect 方法中捕获查询字符串参数,并且仅在该参数满足您的条件时才重定向。例如,在当前场景中,您将获得一个 redirect_to 参数。你可以得到它并检查它是否等于某个值,然后重定向它。 这种方法最终奏效了。我已经在原始问题中发布了我的工作代码(因为它支持格式化)。只要允许,我就会奖励赏金。【参考方案2】:

尝试在你的模板functions.php文件中添加这个:

add_action( 'login_form' , 'glue_login_redirect' );
function glue_login_redirect() 
    global $redirect_to;
    if (!isset($_GET['redirect_to'])) 
        $redirect_to = 'YOURURLHERE';
    
    else
        $redirect_to = $_GET['redirect_to'];
    

【讨论】:

这个解决方案强制所有登录被重定向......我只想要其中的一些。我使用此信息编辑了我的原始问题。 为什么不在函数内部进行过滤:如果访问者通过 oAuth 从不同站点发送到登录页面,则根据 allowed_redirect_hosts 重定向【参考方案3】:

也许这段代码对你有帮助。

<input type="hidden" name="redirect_to" value="<?php echo $_SERVER['REQUEST_URI']; ?>" /> 

它将用户重定向到登录的位置。 例子。如果您从主页或帖子登录。 它的登录然后重定向回主页或登录页面。

这段代码的主要部分是:

<?php echo $_SERVER['REQUEST_URI']; ?>

【讨论】:

以上是关于WordPress登录redirect_to不起作用的主要内容,如果未能解决你的问题,请参考以下文章

使用dwr后,javaweb设置的session超时失效,web.xml和tomcat设置都不起作

Wordpress wp-admin 重定向到 https

在 Rails 中将 redirect_to 格式更改为 :js

菜单栏中的登录/注销字段不合适且不起作用(Wordpress)

我的Android进阶之旅------&gt;Android中ListView中嵌套(ListView)控件时item的点击事件不起作的问题解决方法

WordPress - 检查用户是不是登录