it-swarm.xyz

Показывать различное количество сообщений на странице в зависимости от контекста (например, домашняя страница, поиск, архив)

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

reading-settings-blog-pages-show-at-most-per-page

Я понимаю, что могу сделать это, отредактировав файлы тем и изменив там параметры запроса, но я бы предпочел иметь более легкий доступ к простой странице настроек. Давным-давно я наткнулся на плагин, который сделал это, но я не могу найти его сейчас.

Кто-нибудь знает плагин, чтобы сделать это, или даже функцию, которую я мог бы поместить в functions.php, чтобы выполнить то же самое?

21
Doug

Я полагаю, что лучший способ сделать это в плагине - запустить следующую функцию примера, когда встречается ловушка действия pre_get_posts. Объект $wp_query доступен, это означает, что ваши условные теги доступны, но до того, как WordPress получит сообщения, что означает, что вы меняете переменные запроса до запуска первого запроса, а не добавляете второй запрос, например, когда query_posts () используется в файл темы.

function custom_posts_per_page($query) {
    if (is_home()) {
        $query->set('posts_per_page', 8);
    }
    if (is_search()) {
        $query->set('posts_per_page', -1);
    }
    if (is_archive()) {
        $query->set('posts_per_page', 25);
    } //endif
} //function

//this adds the function above to the 'pre_get_posts' action     
add_action('pre_get_posts', 'custom_posts_per_page');
23
kevtrout

вы можете сделать пользовательский цикл, используя query_posts, и указать количество сообщений с помощью is_home, is_archive и т. д.

простой оператор if вместе с query_posts

0
chrismccoy