Выводим различное количество записей для категорий

26 ноября 2013 / 4 комментария

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

На одном из клиентских сайтов возникла необходимость вывести другое количество анонсов записей. Связано это было с тем, что данная категория содержала ответы на задаваемые вопросы и на странице рубрики в качестве анонса отображалось все содержимое записи — вопрос и ответ на него, поэтому страница рубрики получалась очень длинной, необходимо было её сократить до 5-ти записей и желательно без применения плагинов.

В результате многочисленных экспериментов реализовать разное количество записей помог следующий фрагмент кода:

function custom_posts_per_page($query){
    if(is_home()){
    $query->set('posts_per_page',12);
    }
    if(is_search()){
        $query->set('posts_per_page',-1);
    }
    if(is_archive()){
        $query->set('posts_per_page',20);
}//endif
}//function
//this adds the function above to the 'pre_get_posts' action
    add_action('pre_get_posts','custom_posts_per_page');

Строки 2, 3 задают условие, при котором на главной странице будет отображено 12 записей,
5, 6 выводят на старнице поиска все найденные записи (значение «-1»),
8, 9 выводят на странице архива 20 записей.

Этот фрагмен необходимо добавить в файл функций functions.php

Я видоизменил данный фрагмен под свои нужды:

function custom_posts_per_page($query){
    if(is_search()){
        $query->set('posts_per_page',-1);
    }
   if (is_category('faq')){
        $query->set('posts_per_page',3);
}//endif
}//function
//this adds the function above to the 'pre_get_posts' action
    add_action('pre_get_posts','custom_posts_per_page');

В строке 5 я создал условие, при котором на странице рубрики с наименованием «faq» будет отображено 3 записи.
Просто и быстро, а главное без плагинов!


4 комментария

  1. Алексей

    30 октября 2015
    /

    Использовал ваш метод все получилось в определенной рубрики вывожу 8 постов в остальных по 5 А вот на странице ВСЕ ЗАПИСИ (список всех статей по рубрикам) В той рубрике где указал чтобы выводились 8 постов выводятся только 8 записей все остальные в ней не видны Как это можно поправить?

  2. z140.ru

    12 ноября 2015
    /

    Вышлите ссылку на пример

  3. алихандр

    4 апреля 2017
    /

    спасибо! помогло!

  4. serii

    30 июля 2019
    /

    У меня для произвольных постов работает, а для постов для рубрик, не работает.
    Прописал
    if(is_category()){
    $query->set('posts_per_page', 2);
    }
    Но все равно выводятся больше 2.
    Только у меня рубрики дочерние, это может быть причиной?

* - обязательные поля

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