@miron-partner

Как задать количество выводимых записей для архивов пользовательских типов постов Wordpress?

Здравствуйте. Мне нужно задать для конкретного типа пользовательских типов записей количество выводимых постов для страницы Архивов (для всех таксономий этого типа пользовательских типов записей). В интернете нашел следующий код для вставки в functions.php:
function custom_posts_per_page($query){
    if(is_post_type_archive() || is_tax()){  //количество записей в пользовательстком типе записей и в пользовательских таксономиях
    $query->set('posts_per_page',50);
    }
}
add_action('pre_get_posts','custom_posts_per_page');


Все работает отлично, только на страницах этих же архивов у меня выводится виджет для вывода последних записей и он тоже начинает выводить по 50 последних записей. Если в functions.php не внедрять вышеприведенный код, то все работает как положено:
- в архивах выводится 10 постов (как задано в админке)
- в виджете (последние записи) выводится по 5 постов как выставлено в настройках виджета.

То есть до вставки кода в functions.php количество выводмых записей в виджете и в архивах разное (как указано в настройках каждого из них), а когда я вставляю вышеописанный код, то он задает количество для всех циклов на странице, будь-то записи архива или последние записи.

Короче вопрос: Как задать количество выводимых записей для страниц архивов (пользовательских типов записей) так, чтоб при этом не ломались настройки виджета и там выводилось столько постов, сколько указано в настройках этого виджета?
  • Вопрос задан
  • 1046 просмотров
Решения вопроса 1
@miron-partner Автор вопроса
Вот так заработало как надо:

function custom_posts_per_page($query){
    if(!is_admin() && $query->is_main_query() && is_post_type_archive()){ //количество записей в пользовательстком типе записей
    $query->set('posts_per_page',50);
    }
	 if(!is_admin() && $query->is_main_query() && is_tax()){ //количество записей в пользовательстком типе записей в таксономиях
    $query->set('posts_per_page',50);
    }
}
add_action('pre_get_posts','custom_posts_per_page');
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
BBoyJuss
@BBoyJuss
WordPress, интерфейсы и все вытекающие
Попробуй добавить условие для изменения запроса
if ( is_post_type_archive( 'название кастомного типа products например' )  ) {
    // ...
}


В общем надо доработать условие is_post_type_archive(), is_tax(). Для каждой проверки можно передать уточняющие аргументы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы