Вопрос или проблема
У меня есть шаблон страницы, который перенаправляет на главную страницу с помощью этого:
wp_redirect( home_url() );
Теперь на главной странице возможно ли проверить, был ли сделан редирект с конкретного шаблона страницы без знания URL этой страницы?
Вы можете использовать $_SERVER['HTTP_REFERER']
, чтобы проверить, с какой страницы был выполнен редирект
Вы можете использовать это следующим образом.
if($_SERVER['HTTP_REFERER'] == "path-of-page-you-want-to-check"){
//Сделайте что-то здесь
}
Условно вы можете вызывать функции, такие как is_home()
, is_front_page()
, чтобы выполнить этот блок кода только на главной странице
Ответ или решение
Для проверки, был ли осуществлён редирект с конкретного шаблона страницы на главную страницу в WordPress, вы можете воспользоваться переменной $_SERVER['HTTP_REFERER']
. Однако, стоит учитывать, что этот метод не всегда надёжен, поскольку заголовок HTTP_REFERER
может быть скрыт пользователями или блокироваться различными браузерами и расширениями.
Шаги для реализации проверки редиректа
-
Редирект с определенной страницы:
Убедитесь, что ваш шаблон страницы использует функциюwp_redirect()
для перенаправления на главную страницу. Например:wp_redirect( home_url() ); exit; // Не забывайте вызывать exit, чтобы прекратить выполнение скрипта.
-
Проверка переменной HTTP_REFERER:
В вашем коде на главной странице вы можете добавить следующий фрагмент, чтобы определить, был ли переход выполнен с вашего файла-шаблона:if ( is_home() || is_front_page() ) { // Убедитесь, что вы получили HTTP_REFERER if ( isset($_SERVER['HTTP_REFERER']) ) { $referrer = $_SERVER['HTTP_REFERER']; // Проверьте, соответствует ли HTTP_REFERER нужному шаблону if (strpos($referrer, 'название_вашего_шаблона') !== false) { // Выполните необходимые действия, если редирект произошёл из этого шаблона } } }
Важные моменты
- Безопасность: Обратите внимание, что значение
HTTP_REFERER
можно подделать. Этот метод не подходит для критически важных операций. - SEO и производительность: Используйте редирект с умом. Слишком много редиректов на сайте может негативно повлиять на SEO и производительность.
- Изменение структуры страницы: Если в будущем структура вашего сайта изменится, вам может потребоваться обновить условия в коде.
Альтернативные методы
Если вам нужна более надёжная проверка, вы можете использовать сессии или передавать параметр в URL при выполнении редиректа. Например, добавляя в URL параметр запроса:
wp_redirect( home_url() . '?from_template=my_template' );
exit;
Затем на главной странице вы можете проверить это так:
if ( isset($_GET['from_template']) && $_GET['from_template'] === 'my_template' ) {
// Выполните необходимые действия
}
Заключение
Используя метод с HTTP_REFERER
или параметрами URL, вы можете надёжно проверять, откуда пришёл пользователь. Рекомендуется тщательно протестировать ваш код, чтобы убедиться, что он работает в различных сценариях и браузерах. Следите за безопасностью данных и при необходимости проводите дополнительную обработку.