Pra*_*man 6 php wordpress redirect login
注意:我已经在Wordpress StackExchange中创建了相同的问题,但我没有收到任何回复!对于那个很抱歉!
我没有使用任何自定义登录插件或任何定制代码.我的一些页面在一开始就有这些代码.
<?php
if(!is_user_logged_in())
wp_redirect('/login/');
?>
Run Code Online (Sandbox Code Playgroud)
因此,这不允许用户在未登录时查看页面.我有这些页面带有这些代码:
/wp-content/my-theme/my-account/
/wp-content/my-theme/my-account/world.php
/wp-content/my-theme/my-account/subscription.php
/wp-content/my-theme/my-dashboard.php
/wp-content/my-theme/my-files.php
Run Code Online (Sandbox Code Playgroud)
现在,当用户转到上述任何一个页面而没有登录时,它会重定向到登录页面,当用户登录时,它会将它们登陆到my-account/页面.
我想更改当前场景,使用户重定向到他来自的引用页面.我尝试了以下从未奏效的事情.
HTTP_REFERRER在login/表单中,我放置了这段代码:
<input type="hidden" name="redirect" value="<?php echo $_SERVER['HTTP_REFERER']; ?>" />
Run Code Online (Sandbox Code Playgroud)
functions.php在functions.php,我放置了这段代码:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
参考文献:
我也试过这些并且失败了:
什么都没有成功.如果需要,我很乐意提供进一步的细节.提前致谢.:)
我用这种方式修改了代码:
<?php
if(!is_user_logged_in())
wp_redirect('/login/?redirect_to=' . $_SERVER["REQUEST_URI"]);
?>
Run Code Online (Sandbox Code Playgroud)
这会以这种方式呈现登录页面:
/login.php?redirect_to=/my-account/subscription.php
Run Code Online (Sandbox Code Playgroud)
这对我来说足以进行身份验证和重定向.但我需要找到真正重定向发生的位,我想使用redirect_to参数重定向它!
登录过程通过 AJAX 处理。发布值的函数不考虑redirect_to. JS 文件中的以下代码始终重定向到 /my-account。所以现在当 AJAX 函数返回时,您可以获取隐藏字段的值redirect_to,然后将用户重定向到那里。
window.location = "/my-account/";
Run Code Online (Sandbox Code Playgroud)