2011-12-19 62 views
8

在WordPress中,我试图强制用户登录之前先看到任何东西。意思是我希望我的用户首先登录查看任何单个页面,发布或存档,只有他们可以选择常见问题页面。我正在尝试使用下面的代码,但问题是我一进去就将其重定向到登录页面。WordPress的强制用户登录之前查看任何网站内容

但是我的网站结构会像下面和相同的方式我想这个代码工作...

// Force user to login on welcome 
function my_force_login() { 
global $post; 

    if (is_single() || is_front_page() || is_page() && !is_page('login') && !is_user_logged_in()){ 
     auth_redirect(); 
    } 
} 

Welcomd-登录界面(如Facebook) - 首页页面 -Blog - 关于 - 联系 -FAQ

所以我想允许游客只能看到欢迎登录画面和常见问题解答,联系页面,查看我要强迫他们登录该网站的其余..

我需要你们的大力帮助..非常感谢..

回答

8

我认为你缺少一个括号:

if ((is_single() || is_front_page() || is_page()) 
     && !is_page('login') && !is_user_logged_in()){ 
    auth_redirect(); 
} 
+0

非常感谢。它的作用像魅力。我刚刚添加了is_archive()以防止类别和归档列表。 非常感谢。我会回来,如果需要一些更多的帮助相同..再次感谢 – 2011-12-19 16:35:54

1

有一个插件可以用于此目的。 Private Only

+0

女贞会工作,如果我想使用WP-login.php中,而不是我自己的登录页面。在这里,我想使用登录屏幕作为我的主题登录屏幕,所以我使用'!is_page('login')'该插件继续在重定向循环中进行。因为登录后我有自己的重定向等。 – 2011-12-19 16:30:16

+0

谢谢..正是我想要的 – Christine 2015-12-03 01:02:31

1

简单的方法只有

// Require login for site 
get_currentuserinfo(); 
global $user_ID; 
if ($user_ID == '') { 
    header('Location: /wp-login.php'); exit(); 
} 
+0

似乎有限。你只能在模板上使用它,而不能在站点范围内使用,因为它可能导致循环。 – Jake 2012-09-18 04:17:09

相关问题