Php 让Wordpress博客对注销的访问者完全保密?

Php 让Wordpress博客对注销的访问者完全保密?,php,wordpress,redirect,Php,Wordpress,Redirect,我正在建立一个Wordpress网站,用户需要先登录,然后才能访问博客本身。目前,我使用了以下方法: add_action('wp_head','foofunc'); function foofunc() { if(!is_user_logged_in()) die(); } 但是,这样我无法将用户重定向到另一个url,因为输出已经开始。有没有办法将未登录的用户重定向到url 我会使用userinit,但这也会在wp admin中重定向用户 Martti Laine将“init”处理程

我正在建立一个Wordpress网站,用户需要先登录,然后才能访问博客本身。目前,我使用了以下方法:

add_action('wp_head','foofunc');
function foofunc() {
    if(!is_user_logged_in()) die();
}
但是,这样我无法将用户重定向到另一个url,因为输出已经开始。有没有办法将未登录的用户重定向到url

我会使用user
init
,但这也会在wp admin中重定向用户

Martti Laine

将“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();
    }
}
将“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();
    }
}
  • 您可以使用s2member插件。它创建了4个用户级别,第一个级别是免费用户。创建页面时,可以为该页面选择S2Member用户级别要求
  • 创建一个页面密码保护模板,该模板遵循该链接中的格式。将模板应用于需要密码保护的页面
  • 您可以编写一个函数,检查用户是否使用*is_user\u logged_in()*、*is_admin()*和*is_page()*登录页面,然后重定向。使该函数成为一个动作。然后将该操作挂接到init中。(如果init是正确的钩子,我有点模糊,但是如果有任何输出发送到屏幕,则不会发生重定向)
  • 您可以使用s2member插件。它创建了4个用户级别,第一个级别是免费用户。创建页面时,可以为该页面选择S2Member用户级别要求
  • 创建一个页面密码保护模板,该模板遵循该链接中的格式。将模板应用于需要密码保护的页面
  • 您可以编写一个函数,检查用户是否使用*is_user\u logged_in()*、*is_admin()*和*is_page()*登录页面,然后重定向。使该函数成为一个动作。然后将该操作挂接到init中。(如果init是正确的钩子,我有点模糊,但是如果有任何输出发送到屏幕,则不会发生重定向)

  • 这是一个现成的解决方案


    这是一个现成的解决方案


    最干净的实施:

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

    可以按原样放置在函数中。php最干净的实现:

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

    可以在函数中按原样放置。php

    我正在将其作为一个插件,因此需要通过
    add\u action
    完成。因此
    add\u action(“init”、“foofunc”)
    将是解决方案。如果它导致wp admin出现问题,只需使用is_admin()来检测用户是否已经在管理面板中。我要用新代码更新我的答案。
    是我一直在寻找的!谢谢。实际上这段代码阻止我登录。知道如何修复吗?好的,那么你需要检查当前页面是否是登录页面,在这种情况下,不要重定向。您可以使用
    REQUEST\u URI
    查找当前URL并检查它是否包含“wp login”。我已经更新了示例代码。我正在使其成为一个插件,因此需要通过
    add\u action
    完成。因此
    add\u action(“init”、“foofunc”)
    将是解决方案。如果它导致wp admin出现问题,只需使用is_admin()来检测用户是否已经在管理面板中。我要用新代码更新我的答案。
    是我一直在寻找的!谢谢。实际上这段代码阻止我登录。知道如何修复吗?好的,那么你需要检查当前页面是否是登录页面,在这种情况下,不要重定向。您可以使用
    REQUEST\u URI
    查找当前URL并检查它是否包含“wp login”。我已经更新了示例代码。