将Wordpress博客完全私有以登出访问者?

时间:2011-08-10 12:22:38

标签: php wordpress redirect

我正在构建一个Wordpress网站,用户需要在访问博客本身之前登录。现在,我用过这个:

add_action('wp_head','foofunc');
function foofunc() {
    if(!is_user_logged_in()) die();
}

但是,这样我无法将用户重定向到另一个URL,因为输出已经开始。有没有办法将未登录的用户重定向到网址?

我会用户init,但也会在wp-admin中重定向用户。

Martti Laine

4 个答案:

答案 0 :(得分:5)

使用“init”处理程序和is_admin()来检查用户是否已经在管理面板中:

add_action('init','foofunc');
function foofunc() {
    $isLoginPage = strpos($_SERVER['REQUEST_URI'], "wp-login.php") !== false;   
    if(!is_user_logged_in() && !is_admin() &&  !$isLoginPage) {
        header( 'Location: http://yourdomain.com/login' ) ;
        die();
    }
}

答案 1 :(得分:2)

这是一个开箱即用的交钥匙解决方案。

http://wordpress.org/extend/plugins/more-privacy-options/

答案 2 :(得分:1)

  1. 您可以使用s2member插件。它创建了4个用户级别,第一级用于免费用户。创建页面时,您可以为这些页面选择S2Member用户级别要求。
  2. http://www.rlmseo.com/blog/require-login-for-wordpress-pages/创建一个页面密码保护模板,该模板遵循该链接中的格式。将模板应用于您希望密码保护的页面。
  3. 您可以编写一个函数,使用* is_user_logged_in()*,* is_admin()*和* is_page()*来检查用户是否登录到页面,然后重定向。使该功能成为一种行动。然后将该操作挂钩到 init 。 (如果init是正确的挂钩,我会有点模糊,但如果任何输出已发送到屏幕,则不会发生重定向)

答案 3 :(得分:0)

最干净的实施:

if( (!is_user_logged_in()) && ($GLOBALS['pagenow'] !== 'wp-login.php')  ) {
  wp_redirect('http://anothersite.com');
}

可以按原样放置在functions.php