我正在使用WordPress 3.7.1开发一个网站,并试图在登录时通过redirect_toURL参数重定向用户。
我已经验证了登录表单后端看到了redirect_toGET参数,并且登录提交包括redirect_toPOST值。。。但这是不起作用的地方。
删除了链接和用户凭据
登录后(对于我的管理员帐户和本文中提供的订阅服务器帐户),用户将被带到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);
您可以使用login_redirect
过滤器。请参阅此处http://codex.wordpress.org/Plugin_API/Filter_Reference/login_redirect
我想这就是你想要的。
这通常会重定向所有登录。为了能够仅在需要时重定向,可以在URL中使用查询字符串参数。检查参数,如果存在重定向。
尝试将其添加到模板函数.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'];
}
}
也许这段代码对您有所帮助。
<input type="hidden" name="redirect_to" value="<?php echo $_SERVER['REQUEST_URI']; ?>" />
它将用户重定向到登录位置。实例如果你从主页或帖子登录。它的登录然后重定向回主页或登录页面。
此代码的主要部分是:
<?php echo $_SERVER['REQUEST_URI']; ?>