Разное количество записей на странице без плагинов
Задавать число записей блога, которые выводятся на его страницах, вы можете в админке 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, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!
Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:
- Як сховати відсутні товари в Woocommerce шорткодах та схожих товарах
- Сервіс AdMaven + плагін для монетизації трафіка на WordPress сайтах
- Плагіни для створення стрічки новин з біжучим рядком в WordPress
- Як змінити розміщення кнопки оформлення замовлення в WooCommerce
- Плагін WHWS Display In Stock Products First – відображення товарів в наявності першими
- Підписка MonsterONE: чи варто використовувати цей сервіс у 2023 році? (+5 продуктів, які треба скачати в першу чергу)
- Онлайн генератор ссылок на мессенджеры для WordPress и не только
- WooCommerce (46)
- Безопасность (12)
- Видео (6)
- Виджеты (28)
- Возможности (141)
- Вопрос-ответ (6)
- Начинающим (52)
- Новости (46)
- Оптимизация (23)
- Плагины (246)
- Сервисы (87)
- Хаки и секреты (87)
- Шаблоны (45)
- Записи и посты wordpress, оформление записи (5,91 из 7, голосов - 47)
- Проблема с адаптивными изображениями в Gutenberg редакторе WordPress (3,93 из 7, голосов - 44)
- Умный копирайт в footer.php для wordpress (5,63 из 7, голосов - 30)
- Обновление плагинов и тем в WordPress: автоматическое, через FTP, скрытие уведомлений (5,19 из 7, голосов - 31)
- Polylang — плагин для мультиязычных сайтов на нескольких языках в WordPress (4,42 из 7, голосов - 31)
- Плагин TinyMCE Advanced – wordpress текстовый редактор (6,35 из 7, голосов - 20)
- Рубрики и категории wordpress, функция wp_list_categories (6,05 из 7, голосов - 20)
- Дизайн Мания - о веб-дизайне и не только.
- Tod's Blog - все про заработок онлайн.
- Вебдванольные заметки - обзоры веб-сервисов.
- Зачем нужны Wi-Fi ретрансляторы и как выбрать подходящую модель
- Введение в онлайн-казино Slotor777: многообразие игр и привлекательные бонусы
- Необходимость использования облачного хранилища в наше время, что важно и как выгодно?
- Спрощення процесу звітності за допомогою програми BAS Бухгалтерія
- Технологія підключення інтернету GPON та її переваги
- За що гравці найбільше цінують Lineage 2
- Для каких проектов нужна аренда виртуального сервера и что такое VPS
- Особливості MMORPG ігор (зокрема Lineage 2) та чому люди в них грають
Спасибо, поставил на свой блог, полезная штука! :)
Сработало Ура
Спасибо
Интересные и полезные советы спасибо!
Как быть с is_paged, ??? мне надо чтоб на первой странице было 31пост, а на остальных по 6
Тарас, а что там с is_paged? Немного не понял вопрос. С плагином cbnet Different Posts Per Page решить задачу не получается? Если через приведенный в посте код, то для is_home добавляете дополнительное условие с is_paged, где указываете нужное число страниц. О, кстати, я бы еще попробовал там использовать is_front_page, что отвечает именно главной странице без архива.