Добавление количества записей на страницах архива

Вопрос или проблема

На странице категории мне нужна помощь, заголовок – курорт «Льняно Саббиадоро», я хотел бы отобразить количество записей (апартаментов) для этой категории, возможно, другим цветом, т.е.: Льняно Саббиадоро (185), при этом (185) – в индивидуальном цвете. В будущем у меня будет поле поиска с множеством фильтров, поэтому это количество должно соответствовать результатам поиска.

Вот страница категории, о которой я говорю: https://sacconicase.com/case-vacanza/italia/friuli-venezia-giulia/lignano-sabbiadoro-appartamenti-vacanze/.

Какой ваш совет по поводу кода? Я думаю, это та часть кода, с которой я должен работать (я получил ее в верхней части файла архива/категории):

<?php
if ( ! has_post_format( array( 'gallery' ) ) ) :
    if ( has_post_thumbnail() ) :
        ?>
        <div class="featured-image">
            <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute() ; ?>">
                <?php the_post_thumbnail( 'colormag-featured-image' ); ?>

Если ваша тема не делает ничего особенного, а использует the_archive_title() для отображения «Льняно Саббиадоро», тогда вы сможете изменить это с помощью get_the_archive_title фильтра.

Что-то вроде этого.

add_filter('get_the_archive_title', 'my_get_the_archive_title_filter', 10, 3);
function my_get_the_archive_title_filter(string $title, string $original_title, string $prefix): string {
    if (! is_category()) {
        return $title;
    }

    $current_category = get_queried_object();

    return sprintf(
        '%s <span class="post-count">%d</span>',
        $current_category->name,
        $current_category->count
    );
}

Это очень полезно, спасибо!

Можно ли что-то подобное реализовать для записей? Я хотел бы показать количество комментариев после названия записи.

Например, “Добавление количества комментариев в заголовок записи”

Пример: Блог о Intel (3)

…где (3) – это количество комментариев.

.

Ответ или решение

Добавление количества постов на страницах архивов

Задача

Вам необходимо на странице категории «Lignano Sabbiadoro» (ссылка: Lignano Sabbiadoro) отобразить количество постов (апартаментов) для данного категории. Например, название должно выглядеть как «Lignano Sabbiadoro (185)», при этом число в скобках должно быть выделено другим цветом. Также важно, чтобы это количество соответствовало результатам поиска, которые в будущем будут включать различные фильтры.

Решение

Сначала нужно изменить заголовок архива, используя фильтр get_the_archive_title, который позволяет модифицировать заголовок на страницах категорий. Вот пример кода для реализации этой функциональности:

add_filter('get_the_archive_title', 'my_get_the_archive_title_filter', 10, 3);
function my_get_the_archive_title_filter(string $title, string $original_title, string $prefix): string {
    if (!is_category()) {
        return $title;
    }

    $current_category = get_queried_object();

    return sprintf(
        '%s <span class="post-count" style="color: #FF0000;">(%d)</span>',
        esc_html($current_category->name),
        esc_html($current_category->count)
    );
}

Объяснение кода

  1. Фильтр get_the_archive_title: Мы добавляем свой собственный фильтр, который будет вызываться при рендеринге заголовка архивов.

  2. Проверка на категорию: Убедимся, что мы находимся именно на странице категории с помощью условия is_category(). Если это не так, мы возвращаем оригинальный заголовок.

  3. Получение текущей категории: Используем функцию get_queried_object(), чтобы получить текущий объект категории, включая её название и количество постов.

  4. Форматирование заголовка: Используем функцию sprintf(), чтобы объединить название категории и количество постов в единый строковый вывод. esc_html() применяется для экранирования вывода и предотвращения XSS-уязвимостей.

  5. CSS-стилизация: Мы добавили встроенные стили с помощью style для изменения цвета числа. Рекомендуется переместить любые стили в файл стилей вашего сайта для лучшей практики.

Добавление количества комментариев к заголовку поста

Чтобы отобразить количество комментариев после заголовка каждого поста, можно использовать следующий подход. Настройте заголовок поста с помощью фильтра the_title:

add_filter('the_title', 'add_comments_count_to_title', 10, 2);
function add_comments_count_to_title($title, $id) {
    if (is_single() && get_post_type($id) === 'post') {
        $comments_count = wp_count_comments($id)->approved;

        return sprintf(
            '%s (%d)',
            esc_html($title),
            esc_html($comments_count)
        );
    }
    return $title;
}

Объяснение кода

  1. Фильтр the_title: Мы добавляем фильтр для изменения заголовков постов на одиночных страницах.

  2. Проверка типа поста: Мы проверяем, что текущая страница является одиночным постом и используется стандартный тип поста «post».

  3. Подсчет комментариев: Используем wp_count_comments() для получения количества одобренных комментариев к данному посту.

  4. Автоматическая замена заголовка: Таким же образом, как и в предыдущем примере, мы формируем новый заголовок с использованием функции sprintf(), добавляя количество комментариев в скобках.

Заключение

Таким образом, с помощью простых изменений в коде вашего WordPress-темы вы сможете отобразить количество постов на страницах категорий, а также количество комментариев на страницах постов. Обязательно протестируйте изменения в различных сценариях использования, чтобы убедиться в корректности отображения и отсутствии ошибок в пользовательском интерфейсе.

Оцените материал
Добавить комментарий

Капча загружается...