Intereting Posts
Как перетаскивать сразу несколько элементов меню в WordPress? Перевести slug в WPMU с файлами PO Пользовательский RSS-канал – пустая страница как преобразовать XML из URL в HTML Как остановить _wpnonce и _wp_http_referer от появления в URL-адресе Откуда появился этот элемент div? Передача атрибутов для короткого кода динамически Есть простой способ просто вставить ссылку на изображение (без вставки изображения)? проблема с метаячейкой с фильтром поиска Массовый импорт фотогалереи Показывать список категорий в редакторе сообщений только из текущего пользовательского типа сообщения В версиях WP> = 4.0 используется FORCE_SSL_LOGIN для принудительного HTTPS для всего сеанса администратора? Таксономия, термины и файлы шаблонов Пользовательская регистрация и формы входа с подтверждением reCaptcha 2 Отображать пользовательскую таксономию, условия для детей и сообщения в шаблоне.

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; } 

Solutions Collecting From Web of "wp_redirect не работает в заголовке, выход – сломанная страница"

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; } }