Хук widget_title
в WordPress позволяет изменять заголовок виджетов, отображаемых на фронтенде сайта. С его помощью можно динамически модифицировать заголовки для определенных виджетов или всех виджетов сразу, а также применять стили и добавлять условия для различных типов виджетов.
Хук widget_title
срабатывает, когда WordPress генерирует заголовок виджета, и позволяет отфильтровать его перед отображением на странице.
apply_filters( 'widget_title', string $title, array $instance, mixed $id_base )
$title
(string) — Заголовок виджета.$instance
(array) — Настройки текущего виджета.$id_base
(mixed) — ID виджета, указываемый в конструкторе класса виджета.
Использование
Чтобы применить фильтр, нужно зарегистрировать функцию с помощью add_filter()
и определить, как именно нужно изменить заголовок виджета.
add_filter( 'widget_title', 'my_custom_widget_title', 10, 3 );
function my_custom_widget_title( $title, $instance, $id_base ) {
// Логика изменения заголовка
return $title;
}
Пример #1: Изменение заголовка только у виджета «Категории»
Этот пример позволяет изменить заголовок только для виджета с ID categories
, добавив к нему пользовательский CSS-класс.
add_filter( 'widget_title', 'customize_categories_widget_title', 10, 3 );
function customize_categories_widget_title( $title, $instance, $id_base ) {
if ( $id_base === 'categories' ) {
$title = "<span class='custom-categories-title'>$title</span>";
}
return $title;
}
Теперь заголовок виджета «Категории» будет обернут в <span>
с классом custom-categories-title
, что позволяет его стилизовать через CSS.
Пример #2: Изменение заголовков всех виджетов
Чтобы изменить заголовок у всех виджетов на сайте, например, добавить CSS-класс, можно воспользоваться следующим кодом:
add_filter( 'widget_title', 'add_class_to_all_widget_titles' );
function add_class_to_all_widget_titles( $title ) {
return "<span class='widget-title-global'>$title</span>";
}
С помощью этой функции заголовки всех виджетов на сайте будут обернуты в <span>
с классом widget-title-global
, что упростит их стилизацию.
Пример #3: Добавление текста к заголовку для виджетов типа «Рубрики» с включенной иерархией
Если нужно добавить текст к заголовку для всех виджетов типа «Рубрики», у которых включена иерархическая структура отображения, можно использовать следующий код:
add_filter( 'widget_title', 'customize_hierarchical_categories_title', 10, 3 );
function customize_hierarchical_categories_title( $title, $instance, $id_base ) {
if ( $id_base === 'categories' && ! empty( $instance['hierarchical'] ) ) {
$title .= ' (иерархический)';
}
return $title;
}
Этот код добавляет текст (иерархический)
к заголовкам всех виджетов «Рубрики», отображаемых в виде иерархии.
Пример #4: Замена заголовка у виджета «Последние записи» на динамический
Можно заменить заголовок виджета «Последние записи» на динамический, который будет включать текущую дату:
add_filter( 'widget_title', 'dynamic_recent_posts_widget_title', 10, 3 );
function dynamic_recent_posts_widget_title( $title, $instance, $id_base ) {
if ( $id_base === 'recent-posts' ) {
$title = 'Обновления на ' . date( 'd.m.Y' );
}
return $title;
}
Теперь заголовок виджета «Последние записи» будет включать текущую дату, например, Обновления на 04.11.2024
.
Пример #5: Удаление заголовка для конкретного виджета
Если требуется полностью убрать заголовок у определенного виджета, можно использовать следующий код. Например, для виджета «Поиск»:
add_filter( 'widget_title', 'remove_search_widget_title', 10, 3 );
function remove_search_widget_title( $title, $instance, $id_base ) {
if ( $id_base === 'search' ) {
$title = '';
}
return $title;
}
Этот код удаляет заголовок у виджета «Поиск», оставляя только поле для ввода.
Пример #6: Изменение заголовка виджета в зависимости от роли пользователя
Можно настроить хук так, чтобы заголовок виджета менялся в зависимости от роли пользователя. Например, администраторы видят один заголовок, а другие пользователи — другой:
add_filter( 'widget_title', 'role_based_widget_title', 10, 3 );
function role_based_widget_title( $title, $instance, $id_base ) {
if ( current_user_can( 'manage_options' ) ) {
$title .= ' (Администратор)';
} else {
$title .= ' (Гость)';
}
return $title;
}
Этот код добавляет метку к заголовку в зависимости от роли: (Администратор)
для администраторов и (Гость)
для других пользователей.
Заключение
Хук widget_title
в WordPress предоставляет гибкие возможности для кастомизации заголовков виджетов. Вы можете использовать его для изменения заголовков всех виджетов, виджетов определенного типа или в зависимости от условий, таких как роль пользователя. Это позволяет настроить интерфейс сайта под конкретные требования и улучшить пользовательский опыт.