如果(!IS_USER_LOGED_IN())在404时返回TRUE

时间:2014-01-29 作者:CBeTJlu4ok

我只为注册用户运行一个封闭的网站。

为此,如果用户已登录,我将签入

// no non-authenticated users allowed
if( !is_user_logged_in() ) {
    wp_redirect(\'/wp-login.php\');
    //auth_redirect();
    exit;
}
但有时它只是让我退出,我不知道该在哪里寻找问题。它发生在本地,因此很难调试。

现在:通过不同的功能,我发现if( !is_user_logged_in() ) 在404页上返回true。

我还在调试,但我想听听你的意见,这是正常的还是有意的?您能确认这是否与您的安装相同吗?我正在运行最新版本的Wordpress

更新:

在页脚中仍然不能取消。php

if(!is_user_logged_in()) {
    echo \'123\';
}
echos 123但我的函数不重定向。。但它仍然很奇怪,因此与另一个插件有问题。

插件如下所示:

add_action("wp_footer","bpln_store_ids");
function bpln_store_ids(){
    if(!is_user_logged_in())
        return;
 ?>
 <div id="bpln-notification-ids" style="display:none;">
 <?php echo join(",",bpln_get_all_notification_ids(bp_loggedin_user_id()));?>
 </div>
<?php
}
由于check返回true,因此将永远不会显示实际内容

1 个回复
SO网友:birgire

请尝试以下重定向:

add_action( \'template_redirect\', function(){

    // no non-authenticated users allowed
    if( ! is_user_logged_in() )
    {
        wp_redirect( home_url( \'/wp-login.php\' ), 302 );
        exit();
    }
});
仅允许登录用户查看您的网站。

在中直接使用重定向通常为时已晚header.php 文件,因此最好使用在发送http头之前触发的钩子,如template_redirect 钩同样重要的是template_redirect 未在上激活wp-login.php

结束

相关推荐

有条件地定义WP_DEBUG/仅用于管理员/记录错误(是否为所有链接附加查询参数?)

我正在服务器上开发一个站点,客户端也可以访问该站点,我想做的是显示WP_DEBUG 仅限管理员使用。引用Yoast\'s article 围绕这一点:if ( isset($_GET[\'debug\']) && $_GET[\'debug\'] == \'true\') define(\'WP_DEBUG\', true); 将显示WP_DEBUG 仅适用于具有?debug=true 依附于他们,就像http://domain.com/?debug=true我在