网站仅对注册用户可见

时间:2012-12-17 作者:FlourishDNA

如何禁用对未注册用户的访问?如果用户未登录,我希望将其重定向到自定义注册/登录页面。这是否可能使用下面的代码,因为我不想使用插件。

<?php
if ( is_user_logged_in() ) {
    echo \'Welcome, registered user!\';
} else {
    echo \'Welcome, visitor!\';
}
?>
谢谢。

7 个回复
SO网友:fuxia

将其写入插件:

add_action( \'template_redirect\', \'auth_redirect\' );
作为plugin on GitHub.

这将强制所有尚未登录的访问者登录。

在某些情况下,这是要求每次登录。这可能会更好:

is_admin() || add_action( \'template_redirect\', function() {
    if ( ! is_user_logged_in() )
        auth_redirect();
});
如果要发送404状态,可以替换auth_redirect() 使用:

wp_die( \'Nope.\', \'Not found\', [ \'response\' => 404 ] );

SO网友:Anthony

如果您不想更改代码,可以使用此插件:Restricted Site Access. 它的评级很高,以我个人的经验来看,它运行得非常好。

将您的站点访问权限限制为登录或通过一组指定IP地址访问站点的访问者。将受限制的访问者发送到登录页面,重定向他们,或显示消息或页面。对于外部网、公共托管内部网或并行开发/暂存站点来说,这是一个很好的解决方案。

SO网友:Mike Madern

你可能只需要在你的functions.php:

if ( is_user_logged_in() ) {
    echo \'Welcome, registered user!\';
} else {
    wp_redirect(site_url(\'/wp-login.php?action=register\'));
    exit();
}

SO网友:krunal sojitra

我通过css很容易得到答案。。

主div(.lor1)表示当用户登录此主类时,comman div在页眉后开始,在页脚前细化,在主div中添加新类(.lor1.kun):block

  • 创建新html,例如显示第一次登录时的混乱状态(.lor1.user\\u not\\u login)
    1. ADD this code in header.php

       <?php     
      if (!is_user_logged_in()) {
      ?> 
      <style>
      .lor1{ display:none;}
      .lor1.kun{ display: block;}
      .lor1.user_not_login{ display: block;}
      </style>
      <?php }  ?>
      

    SO网友:CarlosOnWeb

    嗯,您的代码实际上是功能性的。您只需在正确的位置调用正确的模块。

    if( !is_user_logged_in() ){
        // show_registration_panel() 
    } else {
       // He is a registered user. Proceed as usual
    }
    

    SO网友:Ravi Patel

    将此函数添加到函数中。php文件。

    当用户未登录访问主页(页面id==2)时,请在登录页面上重定向。

    <?php
    add_action(\'template_redirect\',\'wpse64899_check_if_logged_in\');
    function wpse64899_check_if_logged_in()
    {
        $pageid = 2; // or whatever you want it to be
        if(!is_user_logged_in() && is_page($pageid))
        {
            $url = add_query_arg(
                \'redirect_to\',
                get_permalink($pageid),
                site_url(\'wp-login.php\')
            );
            wp_redirect($url);
            exit;
        }
    } ?>
    

    SO网友:Prajwal Nayak

    将此代码添加到您孩子的“父主题的主题”功能中。php文件

    add_action( \'template_redirect\', \'redirect_to_specific_page\' );
    
    function redirect_to_specific_page() {
    
    if ( is_page(\'home\') && ! is_user_logged_in() ) {
    
    wp_redirect( \'https://example.com/login\', 301 ); 
      exit;
        }
    }
    
    请将“主页”替换为页面slug名称,即这是您不希望用户在未登录的情况下访问的页面,并替换此url“https://example.com/login“如果用户未登录,您希望在其中重定向用户的目标url,即此url应指向您的登录或注册页面。

    结束

    相关推荐

    禁用或重定向WP-login.php

    是否有办法阻止访客(无论是否登录)访问mysite.com/wp-login.php?我有一个单独的登录表单,这是我们所需要的。我知道我可以重新设置wp-login 但我宁愿不去处理它。我尝试了各种过滤器和挂钩,但似乎无法使其重定向。我还试着用.htaccess 重定向,我发现这是可行的,但它阻止了我的自定义登录/注销表单的工作。想法?