Проблема с is_page & wp_redirect

Я использую файлы cookie, чтобы определить, какое меню я должен использовать на своем веб-сайте. Это работает нормально, но я хочу, чтобы он был правильным, если кто-то просматривает URL-адрес напрямую, а не через URL-адрес с строкой запроса (которая перенаправляется).

Другими словами, URL-адрес www.yourdomain.com/?region=UAE перенаправляется на сайт www.yourdomain.com/uae/, и я хочу показать тот же результат, когда новый посетитель (без куки-файлов) нажимает на прямая ссылка на: www.yourdomain.com/uae/

Я не могу использовать hook для init, поскольку я использую функцию is_page ().

add_action( 'template_redirect', 'pstv_set_uae_cookie'); function pstv_set_uae_cookie() { // Set cookie if on UAE Home Page & redirect back if (is_page('uae') && $_COOKIE_['region'] !== "UAE") { $expire = time()+60*60*24*30; setcookie("region", "UAE", $expire, '/', '.domain.com'); wp_redirect( 'http://domain.com/uae/' ); } } 

Я получаю следующую ошибку в firefox:

Страница не перенаправляется должным образом. Firefox обнаружил, что сервер перенаправляет запрос на этот адрес таким образом, который никогда не будет завершен. Иногда эта проблема может быть вызвана отключением или отказом принимать файлы cookie.

Я знаю, что перенаправление должно произойти до того, как что-либо выйдет, но я не могу получить доступ к is_page до тех пор, пока функции wp не будут инициализированы.

Может ли кто-нибудь предложить обход? ТИА

Solutions Collecting From Web of "Проблема с is_page & wp_redirect"

Вам нужно отделить функцию перенаправления от функции setcookie

Для функции setcookie используйте add_action('wp', 'your_cookies_function_name',10,1) Обратите внимание, что рекомендуется использовать wp а не init потому что is_page не будет работать с init

А для функции перенаправления:

 function your_redirect_function_name() { if(is_page('uae') && $_COOKIE_['region'] !== "UAE"){ wp_redirect('http://domain.com/uae/'); exit(); } } add_action( 'template_redirect', 'your_redirect_function_name',9 ); 

Для получения дополнительной информации перейдите на эту страницу Как установитьcookie if is_page ('page')? следует ли использовать add_action ('init') или есть другое действие?

У меня была такая же проблема, и я исправляю это сам