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' ) );