Описание parse_request
— Action
Хук parse_request позволяет изменять параметры обработки запросов в WordPress. Он срабатывает при анализе запроса перед его обработкой, позволяя модифицировать данные, которые будут использоваться для дальнейшей обработки запроса.
Примеры использования
Пример перенаправления на другую страницу при определенном условии:
add_action('parse_request', function($wp) {
if (isset($wp->query_vars['my_custom_param'])) {
wp_redirect(home_url('/custom-page'));
exit;
}
});
В этом примере мы проверяем наличие параметра ‘my_custom_param’ и перенаправляем пользователя на ‘custom-page’.
Пример добавления нового параметра в запрос:
add_action('parse_request', function($wp) {
if (!empty($wp->request)) {
$wp->query_vars['new_param'] = 'значение';
}
});
Здесь мы добавляем новый параметр ‘new_param’ к запросу, который может быть использован в дальнейшем.
Пример изменения стандартного поведения для конкретного типа записи:
add_action('parse_request', function($wp) {
if ($wp->query_vars['post_type'] === 'product') {
// Изменяем параметры запроса для типа записи 'product'
$wp->query_vars['orderby'] = 'price';
}
});
В этом примере мы меняем порядок сортировки для товаров на основе параметра ‘orderby’.
— Лучшие практики
– Использование
Используйте этот хук, когда необходимо модифицировать параметры запроса перед его обработкой
– Производительность
Следите за производительностью, особенно если добавляете сложные условия, так как это может увеличить время обработки запроса
– Предупреждения
Обязательно вызывайте exit после редиректа, чтобы предотвратить дальнейшую обработку запроса
Альтернативы
Тип: action
Этот хук также может использоваться для изменения запросов, но срабатывает позже в процессе загрузки
Используйте init, если вам нужно выполнить действия после полной инициализации WordPress
Тип: action
Этот хук позволяет изменять запросы на получение постов, и срабатывает до выполнения основного запроса
Используйте pre_get_posts, когда вам нужно модифицировать параметры запроса для получения постов, например, для изменения сортировки или фильтрации