Ранее я уже описывал проблему связанную с регистрацией таксономий и в ней тоже имела место ошибка 404. Но на этот раз ошибка появляется при переходе на вторую и более страницу постраничной навигации (пейджинации, pagination). Решение проблемы можно найти на англоязычных ресурсах, погуглив: “wordpress custom taxonomy pagination 404“. По своей сути, данная статья является выборкой реально работающих способов решения этой проблемы, переведенная на русский язык.
Итак, допустим мы зарегистрировали нашу кастономию (кастомную таксономию) и привязали ее к существующему типу (post type). О том как это сделать подробно описано в Кодексе WordPress. Воспользовавшись полезной схемой для разработки шаблонов для WordPress создаем файл в корне нашего шаблона с именем taxonomy-{имя_таксономии}.php
. Пусть нашу таксономию зовут city
. Тогда файл получится с именем taxonomy-city.php
. Таким образом мы создали файл шаблона, который будет использоваться для отображения списка постов (или других типов записей) к которым относится данная таксономия.
Я не буду подробно описывать какой код должен быть в этом файле, рассчитывая на то, что все в курсе, так как дочитали до этого момента. Если нет, то рекомендую ознакомиться с таким понятием как WordPress Цикл (The Loop).
Решение
Возможно, у вас не возникнет ошибки 404, о которой я говорю. Но это лишь в том случае если вам не понадобиться изменить количество постов на страницу. За это отвечает параметр posts_per_page
.
Итак, правильный способ изменения параметра posts_per_page
для архивных страниц таксономии city
:
function tax_city_posts_per_page( $query ) { if( is_tax('city') ) { $query->set('posts_per_page', 5); //ваше значение } return $query; }
И чтобы применить эту функцию добавим фильтр (подробнее о фильтрах):
add_filter('pre_get_posts', 'tax_city_posts_per_page');
Данный пример является очень частным случаем, но не сложно понять как сделать его более универсальным.