2017-05-25 34 views
0

中的同一页面我向所有未注册的用户限制了3页(ID 861,869,931),但我遇到问题,这些页面将始终将用户重定向到登录页面(即使我登录了),我做错了什么?wp重定向到我网站上的php

下面的代码,有点帮助将大大apprecieated

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

看起来你需要将操作顺序的范围改善一点。首先,您需要检查,如果你对任何这些页面的,然后如果用户登录这样:

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; 
    } 
} 

更重要的是,你可以通过这些ID在同一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(),如果你检查页面?这些自定义帖子类型是?你可能会更好用is_page()

+0

我已经尝试过“is_page()”,但没有结果。它似乎只适用于“is_single()”,任何想法为什么? – RubiksCube

+0

我的猜测是因为你在处理自定义的帖子类型。 is_single()检查单个帖子或自定义帖子类型。 is_page()只检查页面。 –

+0

您可以尝试使用is_singular(),它将检查所有帖子,帖子类型和附件。 –

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; 
    } 
}