the_category

Позволяет изменить отображаемую категорию или список категорий
Хук WordPress
INT 1.2.0
WordPress Icon

Описание хука

Хук «the_category» позволяет определить или изменить категорию или список категорий для текущего поста.

Он вызывается в функции «the_category()», которая выводит список категорий, к которым относится текущий пост. Хук «the_category» предоставляет возможность изменить этот список или его отображение.

Хук «the_category» является фильтром, который позволяет изменить или дополнить список категорий перед его выводом.

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

apply_filters( 'the_category', string $thelist, string $separator, string $parents )

В данном примере используется функция «apply_filters()», которая применяет хук «the_category».

Параметры:

  • $thelist (string) — Список категорий для текущего поста.
  • $separator (string) — Разделитель, используемый между категориями.
  • $parents (string) — Как отображать родительские категории. Принимает значения «multiple» (множественные), «single» (одиночные) или пустое значение.
<?php
/**
 * Пример использования хука the_category
 *
 * @param string $thelist     Список категорий для текущего поста.
 * @param string $separator   Разделитель, используемый между категориями.
 * @param string $parents     Как отображать родительские категории.
 *                            Принимает значения "multiple", "single" или пустое значение.
 * @return string             Измененный список категорий.
 */
function custom_the_category( $thelist, $separator, $parents ) {
    // Добавляем префикс к каждой категории
    $thelist = str_replace( '<a', '<a class="category-link"', $thelist );
    // Возвращаем измененный список категорий
    return $thelist;
}
add_filter( 'the_category', 'custom_the_category', 10, 3 );
?>

В данном примере мы создаем функцию «custom_the_category()», которая принимает три параметра: $thelist, $separator и $parents.

Внутри функции мы изменяем список категорий, добавляя к каждой категории класс «category-link».

Затем мы добавляем созданную функцию в хук «the_category» с помощью функции «add_filter()».

Теперь при вызове функции «the_category()» список категорий будет содержать добавленный класс.

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

Изменение отображения категорий в списке


function custom_category_list( $thelist, $separator, $parents ) {
    // Удаляем пробелы в начале и конце строки
    $thelist = trim( $thelist );
    // Заменяем запятые на точки с запятой
    $thelist = str_replace( ',', ';', $thelist );
    return $thelist;
}
add_filter( 'the_category', 'custom_category_list', 10, 3 );

В данном примере мы создаем функцию custom_category_list, которая принимает три параметра: $thelist (список категорий для текущего поста), $separator (разделитель, используемый между категориями) и $parents (как отображать родительские категории).

Внутри функции мы удаляем пробелы в начале и конце строки с помощью функции trim. Затем мы заменяем запятые на точки с запятой с помощью функции str_replace. Наконец, мы возвращаем измененный список категорий.

Чтобы применить эту функцию, мы используем хук the_category и добавляем нашу функцию custom_category_list с помощью функции add_filter. Мы указываем приоритет 10 и передаем 3 аргумента.

Добавление дополнительной информации к категориям


function add_category_info( $thelist, $separator, $parents ) {
    // Получаем текущую категорию
    $current_category = get_category( get_query_var( 'cat' ) );
    // Добавляем дополнительную информацию к списку категорий
    $thelist .= ' (ID: ' . $current_category->term_id . ')';
    return $thelist;
}
add_filter( 'the_category', 'add_category_info', 10, 3 );

В этом примере мы создаем функцию add_category_info, которая принимает те же три параметра, что и предыдущая функция.

Внутри функции мы получаем текущую категорию с помощью функции get_category и передаем ей идентификатор текущей категории с помощью функции get_query_var. Затем мы добавляем дополнительную информацию (ID категории) к списку категорий с помощью оператора конкатенации ..

Наконец, мы возвращаем измененный список категорий.

Создание собственного разделителя для категорий


function custom_category_separator( $thelist, $separator, $parents ) {
    // Используем двоеточие в качестве разделителя
    $separator = ':';
    return $thelist;
}
add_filter( 'the_category', 'custom_category_separator', 10, 3 );

В этом примере мы создаем функцию custom_category_separator, которая также принимает три параметра.

Внутри функции мы изменяем значение переменной $separator на двоеточие. Это будет новым разделителем для категорий.

Наконец, мы возвращаем неизмененный список категорий, так как мы только меняем разделитель.

Форматирование вывода категорий


function format_category_output( $thelist, $separator, $parents ) {
    // Добавляем теги <span> вокруг каждой категории
    $thelist = str_replace( '<a href', '<span><a href', $thelist );
    $thelist = str_replace( '</a>', '</a></span>', $thelist );
    return $thelist;
}
add_filter( 'the_category', 'format_category_output', 10, 3 );

В этом примере мы создаем функцию format_category_output, которая также принимает три параметра.

Внутри функции мы используем функцию str_replace для добавления тегов <span> вокруг каждой категории. Мы заменяем <a href на <span><a href и </a> на </a></span>.

Таким образом, каждая категория будет обернута в тег <span>, что позволяет нам применять к ним стили или добавлять дополнительные элементы.

Создание ссылок на родительские категории


function add_parent_category_links( $thelist, $separator, $parents ) {
    // Получаем список родительских категорий
    $parent_categories = get_category_parents( get_query_var( 'cat' ), false, $separator );
    // Добавляем ссылки на родительские категории
    $thelist = str_replace( $parent_categories, '<a href="' . get_category_link( $parent_categories ) . '">' . $parent_categories . '</a>', $thelist );
    return $thelist;
}
add_filter( 'the_category', 'add_parent_category_links', 10, 3 );

В этом примере мы создаем функцию add_parent_category_links, которая также принимает три параметра.

Внутри функции мы используем функцию get_category_parents для получения списка родительских категорий. Затем мы заменяем этот список на ссылки на родительские категории с помощью функции str_replace.

Мы используем функцию get_category_link для получения ссылки на каждую родительскую категорию и добавляем ее в тег <a href>.

Наконец, мы возвращаем измененный список категорий.

Вопросы и ответы

Как изменить разделитель между категориями в the_category?

Для изменения разделителя между категориями в функции the_category можно использовать хук the_category_separator. Этот хук позволяет заменить стандартный разделитель запятой на другой символ или строку.

// Пример использования хука the_category_separator
function custom_category_separator( $separator ) {
    return ' | '; // Изменяем разделитель на вертикальную черту
}
add_filter( 'the_category_separator', 'custom_category_separator' );

Как вывести только родительские категории в the_category?

Для вывода только родительских категорий в функции the_category можно использовать параметр $parents. Параметр $parents принимает значения ‘multiple’, ‘single’ или пустую строку.

// Пример вывода только родительских категорий
the_category( ', ', '', 'single' );

Как вывести только дочерние категории в the_category?

Для вывода только дочерних категорий в функции the_category можно использовать параметр $parents. Параметр $parents принимает значения ‘multiple’, ‘single’ или пустую строку.

// Пример вывода только дочерних категорий
the_category( ', ', '', 'multiple' );

Как изменить формат вывода категорий в the_category?

Для изменения формата вывода категорий в функции the_category можно использовать фильтр the_category. Данный фильтр принимает три параметра: $thelist, $separator и $parents.

Параметр $thelist представляет собой список категорий для текущего поста. Параметр $separator определяет разделитель, используемый между категориями. Параметр $parents определяет, как отображать родительские категории. Он может принимать значения ‘multiple’, ‘single’ или быть пустым.

Для изменения формата вывода категорий можно использовать следующий код:


function custom_category_format( $thelist, $separator, $parents ) {
    // Ваш код для изменения формата вывода категорий
    return $thelist;
}
add_filter( 'the_category', 'custom_category_format', 10, 3 );

Как добавить классы или атрибуты категориям в the_category?

Для добавления классов или атрибутов категориям в функции the_category можно использовать фильтр the_category. Данный фильтр принимает три параметра: $thelist, $separator и $parents.

Параметр $thelist представляет собой список категорий для текущего поста. Параметр $separator определяет разделитель, используемый между категориями. Параметр $parents определяет, как отображать родительские категории. Он может принимать значения ‘multiple’, ‘single’ или быть пустым.

Для добавления классов или атрибутов категориям можно использовать следующий код:


function custom_category_attributes( $thelist, $separator, $parents ) {
    // Ваш код для добавления классов или атрибутов категориям
    return $thelist;
}
add_filter( 'the_category', 'custom_category_attributes', 10, 3 );

Как вывести список категорий без ссылок в the_category?

Для вывода списка категорий без ссылок в функции the_category можно использовать фильтр the_category. Данный фильтр принимает три параметра: $thelist, $separator и $parents.

Параметр $thelist представляет собой список категорий для текущего поста. Параметр $separator определяет разделитель, используемый между категориями. Параметр $parents определяет, как отображать родительские категории. Он может принимать значения ‘multiple’, ‘single’ или быть пустым.

Для вывода списка категорий без ссылок можно использовать следующий код:


function custom_category_without_links( $thelist, $separator, $parents ) {
    // Ваш код для вывода списка категорий без ссылок
    return $thelist;
}
add_filter( 'the_category', 'custom_category_without_links', 10, 3 );

Как вывести список категорий с определенным разделителем в the_category?

Для вывода списка категорий с определенным разделителем в функции the_category() можно использовать хук the_category. Этот хук позволяет изменить список категорий перед его выводом.

Пример использования хука the_category:

// Функция-обработчик хука
function custom_category_list( $thelist, $separator, $parents ) {
    // Заменяем разделитель на запятую
    $separator = ', ';
    
    // Возвращаем измененный список категорий
    return $thelist;
}
add_filter( 'the_category', 'custom_category_list', 10, 3 );

В приведенном примере функция custom_category_list() принимает три параметра: $thelist (список категорий), $separator (разделитель) и $parents (родительские категории).

Внутри функции мы заменяем разделитель на запятую и возвращаем измененный список категорий. После добавления этого кода в файл functions.php или в плагин, список категорий будет выводиться с запятой вместо стандартного разделителя.

Как вывести список категорий с определенным форматом в the_category?

Для вывода списка категорий с определенным форматом в функции the_category() можно использовать хук the_category. Этот хук позволяет изменить формат вывода списка категорий.

Пример использования хука the_category:

// Функция-обработчик хука
function custom_category_format( $thelist, $separator, $parents ) {
    // Добавляем перед каждой категорией префикс "Category: "
    $thelist = 'Category: ' . $thelist;
    
    // Возвращаем измененный список категорий
    return $thelist;
}
add_filter( 'the_category', 'custom_category_format', 10, 3 );

В приведенном примере функция custom_category_format() принимает три параметра: $thelist (список категорий), $separator (разделитель) и $parents (родительские категории).

Внутри функции мы добавляем перед каждой категорией префикс «Category: » и возвращаем измененный список категорий. После добавления этого кода в файл functions.php или в плагин, список категорий будет выводиться с указанным форматом.

Как вывести список категорий без родительских категорий в the_category?

Для вывода списка категорий без родительских категорий в функции the_category() можно использовать хук the_category. Этот хук позволяет изменить список категорий перед его выводом.

Пример использования хука the_category:

// Функция-обработчик хука
function custom_category_no_parents( $thelist, $separator, $parents ) {
    // Удаляем родительские категории из списка
    $thelist = preg_replace( '/,?s*(?:' . preg_quote( $parents, '/' ) . ')s*,?/', '', $thelist );
    
    // Возвращаем измененный список категорий
    return $thelist;
}
add_filter( 'the_category', 'custom_category_no_parents', 10, 3 );

В приведенном примере функция custom_category_no_parents() принимает три параметра: $thelist (список категорий), $separator (разделитель) и $parents (родительские категории).

Внутри функции мы удаляем родительские категории из списка с помощью регулярного выражения и возвращаем измененный список категорий. После добавления этого кода в файл functions.php или в плагин, список категорий будет выводиться без родительских категорий.

Хук the_category позволяет изменять список категорий перед его выводом в функции the_category(). С помощью этого хука можно изменить разделитель, формат или исключить родительские категории из списка. Это полезно для настройки вывода категорий в соответствии с требованиями проекта.

Связанные элементы

  • Функция get_the_category(): возвращает массив объектов категорий, к которым относится текущий пост.
  • Функция get_category(): возвращает объект категории по указанному идентификатору.
  • Функция get_category_by_slug(): возвращает объект категории по указанному слагу.
  • Функция get_category_by_path(): возвращает объект категории по указанному пути.
  • Хук get_the_categories: позволяет изменить список категорий для текущего поста.
  • Класс WP_Term: представляет термин (категорию) в WordPress, содержит методы для работы с категориями.
Обсуждение