wp_redirect вызывает "Невозможно изменить информацию заголовка" - PullRequest
0 голосов
/ 29 января 2020

Я пытаюсь ограничить доступ пользователей, которые не вошли в систему, к определенным страницам на сайте, добавив:

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

Но выдает ошибку

Невозможно изменить заголовок информация.

См. скриншот error message

Ответы [ 3 ]

1 голос
/ 29 января 2020

Куда вы положили свой код?

Попробуйте добавить это в файл функций. 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();
        }
    }
}
0 голосов
/ 29 января 2020

Перенаправление должно быть первым, что вы отправляете пользователю. Здесь вы ранее вызывали get_headers(), который отправлял заголовки пользователю, и, следовательно, вы не можете впоследствии использовать перенаправление.

Попробуйте вызвать wp_redirect в начале вашего файла.

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

// ... Rest of your php file
0 голосов
/ 29 января 2020

Просто попробуйте добавить ob_start перед перенаправлением, как показано ниже

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

Или перенаправить, используя javascript, как показано ниже

<?php if (!is_user_logged_in()): ?>
    <script>
        window.location.href='your url';
    </script>
<?php endif; ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...