Хук wp
срабатывает, когда WordPress уже настроил свою среду и установил основные глобальные параметры запроса. Этот хук используется для выполнения действий сразу после настройки окружения, но до того, как начнется обработка контента. Хук подходит для высокоуровневой фильтрации и валидации запросов, а также для установки куки, перенаправления или других действий, которые требуют доступа к объекту $wp
.
do_action_ref_array( ‘wp’, WP $wp )
Хук wp
инициируется в методе main()
объекта WP
, когда среда WordPress уже установлена, но до выполнения маршрутизации и обработки запроса. Объект $wp
передается в функцию по ссылке, что позволяет напрямую влиять на текущий запрос.
Пример 1: Установка пользовательского cookie для определённой страницы
Этот пример показывает, как установить cookie, если пользователь заходит на определённую страницу.
add_action( 'wp', 'set_custom_cookie' );
function set_custom_cookie() {
if ( is_page(42) ) { // Устанавливаем cookie для страницы с ID = 42
setcookie( "custom_page_cookie", "visited", time() + DAY_IN_SECONDS, COOKIEPATH, COOKIE_DOMAIN, false );
}
}
В этом примере cookie custom_page_cookie
устанавливается, если пользователь посещает страницу с ID 42. Cookie будет действовать в течение одного дня.
Пример 2: Перенаправление вложений на страницу с указанием категории
В этом примере показано, как перенаправить пользователей с URL вложений на статическую страницу, созданную для определённой категории.
add_action( 'wp', 'redirect_attachments_to_category_page' );
function redirect_attachments_to_category_page( $wp ) {
if ( is_attachment() ) {
$category_page_url = home_url( '/media-category' ); // URL страницы для перенаправления
wp_redirect( $category_page_url );
exit;
}
}
В данном случае пользователи, попадающие на страницу вложения, будут перенаправлены на /media-category
.
Пример 3: Выполнение кастомного кода на страницах записей определённого автора
Следующий пример иллюстрирует, как использовать хук wp
для выполнения кастомного кода на страницах всех записей определённого автора.
add_action( 'wp', 'custom_code_for_author_posts' );
function custom_code_for_author_posts() {
if ( is_author( 'john-doe' ) ) { // Проверяем, если страница автора с логином 'john-doe'
// Выполняем дополнительные действия, например, вывод баннера или сообщения
echo '<div class="notice">Добро пожаловать на страницы автора Джона!</div>';
}
}
Этот код добавляет сообщение на страницах всех записей автора с логином john-doe
.
Пример 4: Ограничение доступа к страницам определённой категории
С помощью хука wp
можно ограничить доступ к страницам записей определённой категории, перенаправляя пользователей, если они не авторизованы.
add_action( 'wp', 'restrict_category_access' );
function restrict_category_access() {
if ( is_category( 'private' ) && ! is_user_logged_in() ) { // Проверяем категорию и авторизацию
wp_redirect( wp_login_url() );
exit;
}
}
Здесь пользователи, не вошедшие в систему, перенаправляются на страницу входа, если они пытаются открыть категорию с ярлыком private
.
Пример 5: Изменение заголовков для страниц с определённым шаблоном
С помощью хука wp
можно менять заголовки страниц с определённым шаблоном, например, для SEO-оптимизации.
add_action( 'wp', 'customize_page_titles' );
function customize_page_titles() {
if ( is_page_template( 'template-special.php' ) ) {
add_filter( 'document_title_parts', function( $title ) {
$title['title'] = 'Специальная страница - ' . get_bloginfo( 'name' );
return $title;
});
}
}
Этот код добавляет текст к заголовку страниц, которые используют шаблон template-special.php
.
Пример 6: Логирование URL для отладки
Хук wp
также может быть полезен для логирования запросов и URL, что помогает в отладке работы сайта.
add_action( 'wp', 'log_current_url' );
function log_current_url( $wp ) {
if ( is_user_logged_in() && current_user_can( 'manage_options' ) ) { // Логируем только для админа
$current_url = home_url( add_query_arg( array(), $wp->request ) );
error_log( "Current URL: " . $current_url );
}
}
Этот код логирует текущий URL в журнал ошибок для администратора сайта, что удобно для анализа работы сайта.
Заключение
Хук wp
— это мощный инструмент для выполнения кастомных действий сразу после настройки окружения WordPress. Используя его, можно изменять запросы, перенаправлять пользователей, устанавливать cookie и выполнять другие действия, которые требуют доступа к объекту $wp
.