Фильтры заголовков постов в WordPress: примеры использования и подключения

Фильтры заголовков постов в WordPress

Фильтр заголовка поста применяется к его заголовку перед тем, как он будет извлечен или показан.

Заголовок поста обычно отображается с помощью функции the_title() или извлекается с помощью функции get_the_title(). Эти функции активируют данный фильтр.

В некоторых случаях, когда используется the_title(), заголовок может быть удален, если вернуть пустое значение (NULL, FALSE или '') в этом фильтре.

Использование фильтра

Для подключения фильтра используйте следующую строку кода:

add_filter( 'the_title', 'wp_kama_the_title_filter', 10, 2 );

Пример функции фильтра

Вот пример функции, которая подключает фильтр для заголовка поста:

/**
 * Функция для фильтра the_title.
 * 
 * @param string $post_title Заголовок поста.
 * @param int    $post_id    ID поста.
 *
 * @return string
 */
function wp_kama_the_title_filter( $post_title, $post_id ){
    // Здесь можно дополнительно изменить заголовок...
    return $post_title; // Возвращаем (изменённый) заголовок поста.
}

Параметры:

  • $post_title (string) — заголовок поста.
  • $post_id (int) — ID поста.

Примеры использования фильтра

Пример 1: Добавление слова "Страница" к заголовкам статических страниц

Этот пример показывает, как добавить слово "Страница" перед заголовком всех статических страниц:

add_filter( 'the_title', 'add_text_to_page_title' );

function add_text_to_page_title( $title ) {
    if( is_page() ){
        $title = 'Страница: '. $title; // Добавляем "Страница:" к заголовку.
    }
    return $title; // Возвращаем изменённый заголовок.
}

Результат:
Заголовок всех статических страниц будет выглядеть так: "Страница: Заголовок страницы".

Пример 2: Удаление заголовков в категории "реклама"

Этот пример показывает, как убрать заголовок у постов, которые находятся в категории "реклама":

add_filter( 'the_title', 'suppress_if_blurb', 10, 2 );

function suppress_if_blurb( $title, $id = null ) {
    if ( in_category( 'advertise', $id ) ) {
        return ''; // Убираем заголовок, возвращая пустую строку.
    }
    return $title; // Возвращаем оригинальный заголовок.
}

Примечание: В данном примере параметр $id имеет значение null по умолчанию. Это сделано для обработки случаев, когда некоторые вызовы функции могут не передавать этот параметр. Эта проблема возникла в версии 3.1 и была исправлена в версии 3.3. Если необходима обратная совместимость с версиями 3.1-3.3, то важно указать значение по умолчанию для $id, иначе будет возникать PHP-ошибка.

Изменения

  • С версии 0.71: Данный фильтр был внедрён.

Где вызывается фильтр

Фильтр the_title используется в множестве мест внутри WordPress, включая такие функции, как:

  • get_the_title()
  • do_trackbacks()
  • wp_get_archives()
  • next_post_link(), previous_post_link()
  • Множество других функций и хуков.

Фильтр позволяет удобно управлять тем, как будут отображаться заголовки постов в различных ситуациях. Используйте его для того, чтобы кастомизировать ваш сайт и улучшить взаимодействие с пользователями.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *