如果未登录WordPress,则重定向到特定页面

时间:2015-08-04 23:21:42

标签: php wordpress loops redirect login

如果用户未登录,我试图在我的WordPress网站上重定向到目标网页,但它总是卡在重定向循环中。这基本上就是我所拥有的(在functions.php中)......

    add_action( 'template_redirect', function() {

        if ( !is_user_logged_in() && ! is_page('login-to-view') ){
            wp_redirect( site_url( '/login-to-view' ) );
            exit();
        }

     });

3 个答案:

答案 0 :(得分:5)

我知道我迟到了。我听说Big和Pac正在努力奋斗...... 无论如何,这就是我通常做的事情:

  1. 创建一个登录页面,例如www.site.com/login
  2. 在我的functions.php中,我添加了以下代码:
  3. add_action( 'template_redirect', function() {
    
        if( ( !is_page('login') ) ) {
    
            if (!is_user_logged_in() ) {
                wp_redirect( site_url( '/login' ) );        // redirect all...
                exit();
            }
    
        }
    
    });
    

    说明: 上面发生的事情是除了登录页面之外,对网站上每个页面的访问都受到限制。如果需要,您可以选择排除或包含其他页面,也可以选择wp-admin URL。

答案 1 :(得分:1)

问题是我在functions.php中有这个功能。 is_page还不知道它在哪个页面上。我把它移到标题中,就在doctype声明之前,它现在只用这个...

Math.PI/2

另一件需要注意的事情......我无法让它在我的本地主机上工作,我在想因为找不到site_url,它只是重定向到localhost:8888 / login-to-图

我正在使用MAMP,但我猜你可以在PRO版本中设置类似的URL路径。

答案 2 :(得分:0)

让我们说用户没有登录。

然后你的代码以这种方式思考:

  1. 用户是否已登录?
  2. NO?然后做wp_redirect。
  3. 用户被重定向到您的页面,然后该过程再次开始。这就是你获得无限循环的原因。

    尝试改变支票的顺序:

    <?php 
    
        add_action( 'template_redirect', function() {
    
        if ( ! is_page('login-to-view')  &&  ! is_user_logged_in() ){
            wp_redirect( site_url( '/login-to-view' ) );
            exit();
        }
    
     });