将WordPress访问权限限制为仅登录用户

时间:2020-02-11 作者:sialfa

我想将wordpress应用程序的访问权限限制为仅注册用户。

我已经把它放在函数文件中,但如果我没有登录,我也可以看到主页。我如何解决这个问题?

if( is_home() || is_page() || is_single() && !is_user_logged_in() ){
    wp_safe_redirect( wp_login_url() );
  }

2 个回复
最合适的回答,由SO网友:Patryk Parcheta 整理而成

这只适用于博客页面、页面和单个帖子。您需要在登录页面上禁用重定向。在这里,您可以找到如何检测登录页面。Check if wp-login is current page

因此,要根据需要全局重定向,请使用:

if(!is_user_logged_in() && !is_wplogin() ) wp_safe_redirect( wp_login_url() );
函数is\\u wplogin()来自:https://wordpress.stackexchange.com/a/237285/181863

我还更喜欢在初始化之后进行重定向:

function is_wplogin(){
    $ABSPATH_MY = str_replace(array(\'\\\\\',\'/\'), DIRECTORY_SEPARATOR, ABSPATH);
    return ((in_array($ABSPATH_MY.\'wp-login.php\', get_included_files()) || in_array($ABSPATH_MY.\'wp-register.php\', get_included_files()) ) || (isset($_GLOBALS[\'pagenow\']) && $GLOBALS[\'pagenow\'] === \'wp-login.php\') || $_SERVER[\'PHP_SELF\']== \'/wp-login.php\');
}

add_action(\'init\', function () {
    if (!is_user_logged_in() && !is_wplogin()) {
        wp_redirect(wp_login_url());
        die();
    }
});

SO网友:fuxia

is_home() 是指shows the recent blog posts.

如果已将静态页面设置为首页,则不会返回该检查true 那里添加检查is_front_page() 来掩盖那个案子。