Intereting Posts
Получить идентификатор сообщения Проверка состояния входа в систему до инициализации wp_get_current_user Как добавить <ul> в WP_Query на каждые 3 опубликованные сообщения? Страница отображается только при входе пользователя в систему (даже при наличии видимости для публики) Создать собственную разметку для использования в сообщениях? Использование строки из настраиваемого поля в пределах ссылки Получить WordPress 'the_content () с помощью jQuery Как добавить плагин в репозиторий WordPress? Когда oEmbed не работает, отобразите альтернативу Ошибка навигации Как я могу получить идентификатор виджета после перетаскивания для wordpress с помощью jquery? Отображение div, когда сообщение имеет определенный тег Как я могу использовать WP_Query для отображения только 1 сообщения из пользовательского типа сообщения, если запрос возвращает сообщения с идентификатором соответствия в пользовательском поле Исправить настройку по умолчанию в edit.php после фильтрации Можно ли включить встроенный CSS в плагины?

wp_redirect не работает в заголовке, выход – сломанная страница

Извините, что задал такой основной вопрос, я просмотрел другие вопросы и не нашел ответа. Я настроил некоторые общедоступные страницы со своим собственным header-public.php, и я делаю базовую проверку входа для всех других страниц прямо в начале страницы (строка 1 в header.php). Цель состоит в том, чтобы перенаправить нелегальных пользователей на страницу приема, где они могут получить помощь, войти в систему и т. Д.

Это просто: а) он не перенаправляет, и б) добавляет 'exit;' как рекомендовано, нарушает и остальную часть страницы. Я попытался абстрагировать это на функцию в functions.php и сломал функции. Php, так что теперь Idunnowhatsgoingon.

Вот код:

if (is_user_logged_in()) { echo 'loggedin'; } else { echo network_home_url( '/receptionist' ); wp_redirect( network_home_url( '/receptionist' ) ); exit; } 

Проверки работоспособности и повторение работы «network_home_url» тоже работают – я могу скопировать и вставить URL-адрес, и он значительно улучшит вашу страницу.

Будет ли у кого-нибудь совет об этом? Конечно, мне кажется, что он должен работать: \

Изменить: на ответ Ганси и мой ответ, вот текущий код. Выход прокомментирован, так как он разбивает страницу, я раскомментирую ее, когда перенаправление работает.

 if (is_user_logged_in()){ die(); // edit - don't do this per Hansy's response, I misread what it does. My bad. } else { wp_redirect( network_home_url( '/receptionist' ) ); /* exit; */ } 

Я также попытался: if (! Is_user_logged_in ()) {wp_redirect (network_home_url ('/ receptionist')); /* Выход; * /}, поскольку это устраняет как можно больше до перенаправления.

Я начинаю думать, что есть что-то шаткий с темой, так как это должно работать.

Изменить 2: у моего сервера есть пакет безопасности, и безопасный режим PHP включен. Есть ли что-нибудь в конфигурации PHP, которая повлияет на эту функциональность?

Редактировать 3: Это была тема. Я переключился на 2011 год и изменил настройку, и он отлично работает. Что от имени Чарльза Бэббиджа может сделать тема dev, чтобы сломать основной тег шаблона? Разве они больше не учат разлуке с презентацией, логикой и данными в школе? Jeez. Вот код, который работал, для справки. Я попробую еще одно усовершенствованное решение Hansy.

 if (!is_user_logged_in() ) { wp_redirect( network_home_url( '/receptionist' ) ); exit; } 

wp_redirect отправляет заголовок, поэтому повторяет что-либо прежде, чем произойдет сбой перенаправления. Итак, в этом случае вы можете удалить echo network_home_url( '/receptionist' ); и если какой-либо вывод не отправляется, он будет работать нормально.

Обновление: в обоих случаях проблема заключается в том, что вы выполняете бесконечное перенаправление (перенаправляете на этот URL-адрес, если он не вошел в систему), а комментарий выхода не помогает, также в первом случае при использовании die () вы убиваете страницу для всех вошедшие в систему пользователи, вместо этого используйте что-то вроде этого (добавлены проверки, если мы на admin, чтобы пользователь мог зарегистрироваться)

 global $pagenow; if ( !preg_match("!wp-admin!",$_SERVER["REQUEST_URI"] ) and !in_array( $pagenow, array( 'wp-login.php', 'wp-register.php' ) ) ){ $scheme = is_ssl() && !is_admin() ? 'https' : 'http'; $current_url=$scheme . '://'.$_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]; $network_url=network_home_url( '/receptionist' ); if (!is_user_logged_in() and $current_url!=$network_url){ wp_redirect( $network_url ); exit; } }