О том, как организовать вывод различного количества постов (записей) на главной страничке или страницах архивов, эта статья и повествует: скажем, вам нужно выводить 7 статей на главной и 10 в рубриках, но 5 в архиве тегов и т.п.
Ниже будет код, который, на мой взгляд (и не только мой), более полезен для сайта/блога, нежели основная (в админке) настройка задачи параметров количества выводимых записей в архивах категорий или тегов – или результатах поиска.
Одно из преимуществ кода настройки количества записей в архивах: сокращение запросов к БД – иными словами – экономия ресурсов.
Занавес… открывается))
как вывести нужное количество постов в архивах сайта
Для того, чтобы количество записей, скажем, в категориях было меньше числа выводимых записей на главной страничке, или как-то наоборот, – нужно прописать такой код (показанный чуть ниже) в файл functions.php
… либо же в отдельный плагин: как такой плагин организовать, смотрите тут.
Чем этот код примечателен??
В вордпресс существует глобальная настройка posts_per_page
для задачи количества выводимых записей (админка/настройки/чтения) для всех типов архивов: другими словами – единый глобальный запрос к БД.
Однако изменить параметр настройки отображения количества записей на страничках архивов сайта возможно до основного (глобального) запроса к Базе Данных – это, как и говорилось выше, будет полезно в целях экономии ресурсов (на лишних обрабатываемых запросах)…
Если воспользуетесь кодом, то, замените в админке ваши прежние значения количества выводимых постов на значение единицы (1)
Всё что нам потребуется для реализации сегодняшней задачи, это такой хук (или событие) из арсенала вордпресс pre_get_posts
– с его помощью перезапишем параметры posts_per_page
и для архива с произвольным типом записи tv-set
– примера ради…
…а заодно и зададим параметры архивов вообще… (как вариант)
/** количество постов выводимых на стр. архивов - и произвольный тип записей **/
function hwl_home_pagesize( $query ) {
// Пример вывода, если это админ-панель или не основной запрос.
if ( is_admin() || ! $query->is_main_query() )
return;
if ( is_home() ) {
// Выводим только 8 постов на главной странице
$query->set( 'posts_per_page', 8 );
return;
}
if ( is_tag() ) {
// Выводим только 8 постов на странице тегов
$query->set( 'posts_per_page', 8 );
return;
}
if ( is_category() ) {
// Выводим только 8 постов на странице категорий
$query->set( 'posts_per_page', 8 );
return;
}
if ( is_search() ) {
// Выводим только 8 постов на странице поиска и т.д.
$query->set( 'posts_per_page', 8 );
return;
}
// пример вывода количества записей архива tv-set
if ( is_post_type_archive( 'tv-set' ) ) {
// Выводим 20 записей если это архив типа записи 'tv-set'
$query->set( 'posts_per_page', 20 );
return;
}
}
add_action('pre_get_posts', 'hwl_home_pagesize', 1 );
/** количество постов выводимых на стр. архивов **/
Код, конечно, можно организовать несколько короче – не прописывать для каждого архива отдельные правила (если количества равны)… а сгруппировать.
Однако я показал такой вариант: на мой взгляд, этим способом можно (коли в том нужда) более тонко настроить количественную структуристику сайта))
Напоминаю: код реализован на примере решения настройки количества выводимых постов в произвольном архиве типа “tv-set” – это тем, которые пользуются своими типами… помимо рубрик и тегов… (хотя это в среде блогеров, думается, встречается оч. реденько – и об этом в следующих публикациях)…
Как видите, задан параметр вывода 20-ти записей…
Если кому-то нужно, чтобы в архивах как-то более тонко настроить отображение информации, читайте, например, о том, как вывести в архиве одни только тайтлы (title) статей и т.п
Как запретить вывод определённой записи или рубрики на главной странице сайта или поста в каком-то архиве..? читайте здесь.
Эпилог:
Таким образом, можно тончайше организовать оптимальную визуальную структуру “изображения” сайта)) настраивая под свои требования количества показа записей на страничках архивов.
Удачи вам..! и до встречи.
На этом занавес представления опускается…
…на рампы пыль печальная ложится…
!..подписываясь на обновления mihalica.ru —
...расстаёмся с невежеством..!
mihalica.ru !