Представить современный Вордпресс сайт без использования произвольных типов записей невозможно. Именно благодаря невероятно гибкой кастомизации сущностей, на Вордпресс можно реализовать абсолютно любые механизмы: простые, сложные, связанные между собой или с иными ресурсами. Но как обычно «из коробки» доступно не все, и кое-что приходится допиливать с помощью не менее удобных и полезных хуков-фильтров.
Менять количество записей в архивах произвольных типов приходится часто. Понятно, что редко встречаются такие интерфейсы, чтобы посты и другие условные элементы выводились в одинаковой сетке с одинаковым количеством элементов.
Допустим, есть посты, книги и видео.
Нужно вывести сетку постов 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' );
Вот в общем-то и все.