Отображение общего количества сообщений на странице без пагинации в WordPress

Я пытаюсь отобразить общее количество сообщений для основных категорий в WordPress вместо отображения всех сообщений.

Как мне ограничить общее количество сообщений, отображаемых без нумерации страниц?

Следующее не работает:

function target_main_category_query_with_conditional_tags( $query ) {
    if ( ! is_admin() && $query->is_main_query() ) {

        if ( is_category(array( 45, 49 )) ) {

            $query->set( 'posts_per_page', 9 );
            $query->set( 'nopaging', true );
        }
    }
}
add_action( 'pre_get_posts', 'target_main_category_query_with_conditional_tags' );

Вы пытаетесь одновременно установить «posts_per_page» и «nopaging». Если для параметра nopaging установлено значение true, он переопределит posts_per_page и отобразит все сообщения.

user633440 29.03.2024 22:51

Что плохого в использовании пагинации? Если вы хотите отобразить общее количество сообщений, но отобразить только некоторые сообщения, вам понадобятся два запроса. Один для получения количества, а другой для получения фактических сообщений с использованием порядка и ограничения (максимальное количество строк).

Tony 30.03.2024 01:41
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
68
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Этот код управляет страницей категории.

<?php
function target_main_category_query_atakanau( $query ) {
    if ( ! is_admin() && $query->is_main_query() && $query->is_category() && $query->get_queried_object()->parent == 0 ) {
        $query->set( 'posts_per_page', 2 );
        $query->set( 'no_found_rows', true );
        // Adds HTML to the category description:
        add_filter( 'category_description', 'add_content_to_category_description_atakanau', 10, 2);
    }
}
function add_content_to_category_description_atakanau( $description , $category_id) {
    $total_post_count = total_posts_of_category_atakanau($category_id);
    $new_description = $description . '<p>This category contains a total of '.$total_post_count.' posts.</p>';
    return $new_description;
}
function total_posts_of_category_atakanau($category_id) {
    $total_post_count = 0;

    $subcategories = get_categories( array(
        'child_of' => $category_id,
    ) );

    foreach ( $subcategories as $subcategory ) {
        $total_post_count += $subcategory->count;
    }

    // Add the post count of the given category itself
    $main_category = get_category( $category_id );
    $total_post_count += $main_category->count;

    return $total_post_count;
}
add_action( 'pre_get_posts', 'target_main_category_query_atakanau' );

Условия:

! is_admin() : запрос не для админки

$query->is_category(): страница категории

$query->get_queried_object()->parent == 0: Родительская категория.

Примечание: как сказал @Karl Hill, параметр nopaging переопределяет posts_per_page, не используйте его.

Другие вопросы по теме