首页 > 解决方案 > wp_redirect 导致“无法修改标头信息”

问题描述

我试图通过添加以下内容来限制未登录的用户访问网站上的某些页面:

if (!is_user_logged_in()) {
    wp_redirect(esc_url(site_url('/')));
    exit();
}

但它会产生错误

无法修改标头信息。

看截图错误信息

标签: phpwordpress

解决方案


你把你的代码放在哪里了?

尝试将其添加到您的 functions.php 文件中。

add_action('init', 'check_for_user_logged_in');

function check_for_user_logged_in()
{
    if (!is_user_logged_in()) {
        $currentUrl = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
        $redirectUrl = site_url('/');

        if ($currentUrl != $redirectUrl) {
            wp_redirect($redirectUrl);
            die();
        }
    }
}

推荐阅读