如果用户未登录且页面ID不是6-重定向至登录

时间:2014-08-04 作者:fightstarr20

我正在尝试根据以下内容重定向用户。。。

如果角色=客户(&L);页面不是ID 6,如果未登录,则重定向到签出(&L);页面ID不是6,然后重定向到登录,用户角色=成员,页面ID是6重定向到主页

//If Role = Customer & Page Is ID 6 Then Redirect To Checkout
if ( user_can( $current_user, "customer" ) && ! is_page( 6 ) ) 
{
wp_redirect(home_url().\'/checkout\');
exit;
}

elseif ( ! is_page ( 6 ) )
{
//If Not Logged in & Page Is Not ID 6 then redirect to login
auth_redirect();
}


elseif ( user_can( $current_user, "member" ) && is_page( 6 ) )
{
// User role = member and Page ID is 6 redirect to home page
wp_redirect(home_url());
exit;
}
?>
据我所知,这应该行得通,但不行,它给了我一页空白。正在从标头运行脚本。php和是php文件中的第一件事。

第一条规则-如果角色=客户(&P);页面ID为6,然后重定向到签出工作正常,并且它们被重定向到签出页面。

第二条规则禁止任何人登录

第三条规则工作正常

我做错什么了吗?

2 个回复
SO网友:Pieter Goosen

EDIT

您正在使用auth_redirect();, 默认情况下,它会检查用户是否登录,因此无需再次检查用户是否登录

从页面调用此代码时,它会检查查看该页面的用户是否已登录。如果用户未登录,则会将其重定向到登录页面。用户被重定向的方式是,登录后,他们将被直接发送到他们最初尝试访问的页面。

所以你可以

if ( ! is_page ( 6 ) ) {
    auth_redirect();
}

EDIT 2

//If Role = Customer & Page Is ID 6 Then Redirect To Checkout
if ( user_can( $current_user, "customer" ) && ! is_page( 6 ) ) 
这是代码的前两行,检查第1行页面的ID为6,检查第2行! is_page( 6 )。找出差异?

如果页面IDIS NOT 6

EDIT 3

正在从标头运行脚本。php和是php文件中的第一件事

php文件中的第一件事是什么意思。这将破坏你的网站。您需要将此代码至少移动到开始正文标记内(<body>), 应该在哪里

EDIt 4

自我们开始以来,一些事情发生了变化:-)。尝试重新组织序列

//If Role = Customer & Page Is ID 6 Then Redirect To Checkout
if ( user_can( $current_user, "customer" ) && ! is_page( 6 ) ) {

    wp_redirect(home_url().\'/checkout\');
  exit;

}elseif ( user_can( $current_user, "member" ) && is_page( 6 ) {

   // User role = member and Page ID is 6 redirect to home page
     wp_redirect(home_url());
  exit;

} elseif ( ! is_page ( 6 ) && !is_user_logged_in() ) {
//If Not Logged in & Page Is Not ID 6 then redirect to login
     auth_redirect(); //Not sure if this will work. 
}
?>

SO网友:Nicolai Grossherr

不要在你的header.php 并污染你的模板,利用WordPress提供给你的系统template_redirect 这样的动作:

add_action( \'template_redirect\', \'wpse156774_redirect\' );
function wpse156774_redirect() {
    // your code and conditions here
}
这可以放在你的functions.php 或插件。

结束

相关推荐

Redirection on Custom page

我已经创建了登录页面模板,并通过wp admin->页面创建了登录页面。在这里,我选择“登录”模板如果有人没有登录,现在我需要重定向此页面上的用户。wp admin登录和此登录页是分开的。是否有人登录wp admin没有关系。我使用的代码如下所示,FireFox将我重定向到错误页面,并说“页面没有正确重定向”。if ( !is_admin() ) { if(!isset($_COOKIE[\'login_token\']) || $_COOKIE[\'login_token\']