wp_redirect
Дозволяє змінити адресу перенаправлення (редиректу), яка передається у функцію (вказується для функції) wp_redirect() .
Використання
add_filter( 'wp_redirect', 'wp_kama_redirect_filter', 10, 2); /** * Function for `wp_redirect` filter-hook. * * @param string $location Оцінка або URL-адреса до реdirect to. * @param int $status HTTP response status code to use. * * @return string */ function wp_kama_redirect_filter( $location, $status ){ // Filter... return $location; }
-
$location
(рядок) - Шлях або URL для перенаправлення.
-
$status
(число) -
Статус код перенаправлення (
код стану HTTP ).
Приклади
#1 Як відстежити, де відбувається перенаправлення
Іноді при дебаге складно відстежити (відловити, знайти) який ділянку коду створює перенаправлення WordPress (складно зловити редирект). Але якщо такі редиректи робляться функціями WordPress: wp_safe_redirect() – рішення є!
Нижче показано як легко виловлювати редиректи.
При включеному дебазі використовуємо код:
add_filter( 'wp_redirect', 'wp_redirect_print_debug_backtrace'); function wp_redirect_print_debug_backtrace( $location ) { error_log (print_r (debug_backtrace (true), true)); // або /* ob_start(); debug_print_backtrace(); $log = ob_get_clean(); error_log($log); */ return $location; }
Ознайомтеся з можливостями функції debug_backtrace , щоб змінити повноту даних.
Також можна використовувати функцію debug_print_backtrace() , але вона відразу виводить дані на екран, тому їх треба “буферити”, щоб передати error_log() .
Тепер спробуємо, наприклад, відвідати сторінку example.com/login/
, з якою двигун перенаправить нас на сторінку example.com/wp-login.php
. У лозі ми отримаємо таку інформацію:
Завдяки цій налагоджувальній інформації, ми визначили, що за перенаправлення відповідальний хук:
add_action( 'template_redirect', 'wp_redirect_admin_locations', 1000);
Він навішується у файлі wp_redirect_admin_locations() , яка створює саме перенаправлення.
список змін
З версії 2.1.0 | Введено. |
Де викликається хук
$location = apply_filters( 'wp_redirect', $location, $status );
Де використовується хук у WordPress
add_filter( 'wp_redirect', array( $this, 'add_state_query_params' ) );