Меняем количество записей в циклах произвольных типов записей

10 марта 2020

Количество записей в архивах Вордпресс задается единое для всех типов записей. Показываю, как это обойти и задать для разных типов разные значения.

Кворк 4

Представить современный Вордпресс сайт без использования произвольных типов записей невозможно. Именно благодаря невероятно гибкой кастомизации сущностей, на Вордпресс можно реализовать абсолютно любые механизмы: простые, сложные, связанные между собой или с иными ресурсами. Но как обычно «из коробки» доступно не все, и кое-что приходится допиливать с помощью не менее удобных и полезных хуков-фильтров.

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

Допустим, есть посты, книги и видео.

Нужно вывести сетку постов 3х4 по 12 элементов на страницу, книги (book) 4х4 по 16 элементов и, например, видео (video) 2х5 по 10 элементов на страницу.

Для постов задаём в настройках 12, а для книг и видео вешаем такую функцию.

/* 16 книг и 10 видео в архивах */
 
function my_cptui_change_posts_per_page( $query ) {
 
  if ( is_admin() || ! $query->is_main_query() ) {
    return;
  }
  if ( is_post_type_archive( 'book' ) || is_post_type_archive('book') && is_category() ) {
    $query->set( 'posts_per_page', 16 );
  }
  if ( is_post_type_archive( 'video' ) || is_post_type_archive('video) && is_category() ) {
    $query->set( 'posts_per_page', 10 );
  }
}
 
add_filter( 'pre_get_posts', 'my_cptui_change_posts_per_page' ); 

Вот в общем-то и все.

Подпишитесь на мой телеграм и первыми получайте новые материалы, в том числе которых нет на сайте.

INNERSTAT
Лучшее за неделю
Иван Данилин

Практикующий веб-разработчик, специализируюсь на платформе Вордпресс.

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