在我的网站上我限制了3个页面(ID 861,869,931)给所有非注册用户,但我遇到了问题,这些页面总会将用户重定向到登录页面(即使我&# 39;我登录了),我做错了什么?
这里是代码,一点点帮助会非常感激
add_action( 'template_redirect', 'redirect_to_specific_page' );
function redirect_to_specific_page() {
if ( is_single('861') or is_single('869') or is_single(931) &&
!is_user_logged_in() ) {
wp_redirect( 'http://mywebsite.com/login', 301 );
exit;
}
}
答案 0 :(得分:0)
if ( is_single('861') or is_single('869') or is_single(931) &&
!is_user_logged_in() )
不应该更像吗?
if ( (is_single('861') || is_single('869') || is_single(931)) &&
!is_user_logged_in() )
C# conditional AND (&&) OR (||) precedence
在C#&&显然优先于||。最好把它放进()以防万一。
http://php.net/manual/en/language.operators.precedence.php
我的意思是,也许是PHP。
答案 1 :(得分:0)
如果条件不正确,则为您。试试这段代码
add_action( 'template_redirect', 'redirect_to_specific_page' );
function redirect_to_specific_page() {
if ( is_single('861') || is_single('869') || is_single(931) ) {
if ( !is_user_logged_in() ) {
wp_redirect( 'http://mywebsite.com/login', 301 );
exit;
}
}
答案 2 :(得分:0)
看起来您需要更好地调整操作顺序。您首先需要检查您是否在任何这些页面上,然后检查用户是否已登录。所以:
<link href="//netdna.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" />
<div class="container">
<div class="row text-center">
<h1>HEADER 1</h1>
</div>
<div class="row text-center">
<h1>
LARGER HEADER LIKE THIS
<hr>
</h1>
</div>
</div>
更好的是,您可以将这些ID传递到同一个add_action( 'template_redirect', 'redirect_to_specific_page' );
function redirect_to_specific_page() {
if ( (is_single('861') || is_single('869') || is_single(931)) &&
!is_user_logged_in() ) {
if ( !is_user_logged_in() ) {
wp_redirect( 'http://mywebsite.com/login', 301 );
exit;
}
}
来电:
is_single()
顺便说一下,如果您正在检查网页,为什么要使用if ( is_single(array(861, 869, 931)) && !is_user_logged_in() ) {
if ( !is_user_logged_in() ) {
wp_redirect( 'http://mywebsite.com/login', 301 );
exit;
}
}
?这些自定义帖子类型?使用is_single()
可能会更好。