Разное количество записей на странице без плагинов
Задавать число записей блога, которые выводятся на его страницах, вы можете в админке wordpress в разделе «Параметры» — «Чтение». К сожалению, сделать это можно одновременно для всех страниц без исключения — главная, архивы, категории и т.п. Я уже рассказывал о плагине Different Posts Per Page который, в принципе, помогает решить проблему. Но каково же было мое удивление, когда новая его версия стала более «урезанной» и не способной охватить все типы задач.
Новый Different Posts Per Page вместо отдельного раздела теперь добавляет все настройки в «Параметры» — «Чтение». Здесь имеются разные типы страниц с возможностью выбора количества постов и сортировкой по тем или иным параметрам (дате, автору, заголовку, случайным образом и т.п.).
Сортировка, кстати, достаточно интересная штука и поможет решить специфические задачи, но как выбрать разное число записей для разных категорий. Раньше в модуле это было! Например, есть на сайте новости, где заметки занимают мало места, без картинок и анонсы достаточно краткие, а есть статьи с иллюстрациями, которые выводятся на главной каким-то ярким способом.
Теоретически вы можете использовать WP_Query в цикле (loop) или сделать под разные категории свой шаблон. Напомню один из wordpress хаков — для категории блога можно создать файл шаблона по типу category-2.php или category-3.php, где цифры = ID категории.
Но есть куда более интересный и красивый метод! Если я правильно понял, там используется хук pre_get_posts который меняет запрос в момент формирования постов, и это как-то более адекватно нежели создавать второй query_posts(). Итак, вы должны зайти в файл functions.php где добавляете следующую конструкцию:
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'); |
Здесь используются условные операторы — is_home (для главной), is_search (страницы поиска), архивов (is_archive), а также параметр posts_per_page отвечающий за выводимое количество записей. Значение «-1» означает, что нужно отобразить абсолютно все посты на той или иной странице (может, в принципе, пригодиться). Я тестировал этот вариант на 2-3 сайтах, везде все отлично работало, проблем с навигацией также не возникло. Сам метод максимально прост и нагляден. Если будут какие-то замечания — пишите в комментариях.
Update 29.07.03. Если вы хотите в приведенном выше коде использовать разное число записей для страниц архива, добавив в условие is_paged, не забывайте про смещение $offset. Там может возникнуть глюк когда часть записей не будет отображаться на второй странице (если выводите на подстраницах больше постов чем на главной.
комментариев 5 к статье “Разное количество записей на странице без плагинов”
Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!
Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:
- Media Cleaner — для удаления неиспользуемых изображений WordPress
- VpsUP.ru — рейтинг VPS/VDS хостеров и помощь с выбором сервера
- OptiPic – оптимизация изображений для сайтов на WordPress и не только
- Как убрать Google Maps API на сайте с WordPress?
- Finteza Analytics — сервис для комплексного анализа трафика + бесплатный плагин
- WPShop — 4 функциональных премиум темы на любой вкус + плагин Clearfy Pro
- Duplicator — лучший плагин переноса WordPress, алгоритм клонирования сайта
- WooCommerce (30)
- Безопасность (10)
- Видео (6)
- Виджеты (24)
- Возможности (124)
- Вопрос-ответ (2)
- Начинающим (44)
- Новости (42)
- Оптимизация (20)
- Плагины (216)
- Сервисы (73)
- Хаки и секреты (79)
- Шаблоны (42)
- Записи и посты wordpress, оформление записи
(5,89 из 7, голосов - 46)
- Умный копирайт в footer.php для wordpress
(5,79 из 7, голосов - 29)
- Рубрики и категории wordpress, функция wp_list_categories
(6,00 из 7, голосов - 19)
- Плагин TinyMCE Advanced – wordpress текстовый редактор
(6,24 из 7, голосов - 17)
- Ссылка читать далее в WordPress (тег read more)
(5,00 из 7, голосов - 17)
- 17 полезных приемов и хаков для WordPress
(5,57 из 7, голосов - 14)
- Вывод текста в блоге только на главной
(6,82 из 7, голосов - 11)

- Дизайн Мания - о веб-дизайне и не только.
- Tod's Blog - все про заработок онлайн.
- Вебдванольные заметки - обзоры веб-сервисов.
- WordpressPlugins.ru
- Majordomo - выгодные цены на виртуальный хостинг
- О факторах мешающих развитию интернет-магазина
- Мобильное казино «Вулкан» — можно скачать на телефон и играть
- Создание сайта визитки
- Работаем с удаленным сотрудником
- Игра в казино Вулкан — сплошное удовольствие (обзор + турниры)
- Как быстро продать товар в интернете, контекстная реклама и раскрутка
- Заголовки, как способ привлечения внимания
Спасибо, поставил на свой блог, полезная штука! :)
Сработало Ура
Спасибо
Интересные и полезные советы спасибо!
Как быть с is_paged, ??? мне надо чтоб на первой странице было 31пост, а на остальных по 6
Тарас, а что там с is_paged? Немного не понял вопрос. С плагином cbnet Different Posts Per Page решить задачу не получается? Если через приведенный в посте код, то для is_home добавляете дополнительное условие с is_paged, где указываете нужное число страниц. О, кстати, я бы еще попробовал там использовать is_front_page, что отвечает именно главной странице без архива.