我试图让它在我的WordPress网站上重定向到一个着陆页,如果用户没有登录,但它总是陷入重定向循环。这就是我(在functions。php中)…
add_action( 'template_redirect', function() {
if ( !is_user_logged_in() && ! is_page('login-to-view') ){
wp_redirect( site_url( '/login-to-view' ) );
exit();
}
});
我知道我聚会迟到了。我听说Big和Pac在摇滚…无论如何,这是我通常做的:
- 创建登录页面,例如www.site.com/login
- 在我的functions.php中添加了以下代码:
add_action( 'template_redirect', function() {
if( ( !is_page('login') ) ) {
if (!is_user_logged_in() ) {
wp_redirect( site_url( '/login' ) ); // redirect all...
exit();
}
}
});
解释:上面发生的情况是,除了登录页面外,对网站上每个页面的访问都受到限制。如果需要,您可以选择排除或包含其他页面以及wp-admin url。
问题是我在functions.php中有函数。Is_page还不知道它在哪个页面。我把它移到标题,就在doctype声明之前,现在它可以工作了…
if ( ! is_page('login-to-view') && ! is_user_logged_in() ){
wp_redirect( site_url( '/login-to-view' ) );
exit();
}
还有一件事要注意…我无法让它在我的本地主机上工作,我想是因为找不到site_url,它只是重定向到localhost:8888/login-to-view
我正在使用MAMP,但我猜你可以在PRO版本中设置URL路径。
假设用户没有登录。
那么你的代码是这样思考的:
- 用户是否登录?
- 没有?然后执行wp_redirect。
用户被重定向到您的页面,并重新开始该过程。这就是为什么会出现无限循环
试着改变检查的顺序:
<?php
add_action( 'template_redirect', function() {
if ( ! is_page('login-to-view') && ! is_user_logged_in() ){
wp_redirect( site_url( '/login-to-view' ) );
exit();
}
});