wp重定向到php中的同一页面

时间:2017-05-25 16:30:58

标签: php wordpress

在我的网站上我限制了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;
 }
}

3 个答案:

答案 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()可能会更好。