@Grione

Почему не работает кастомное условие для пагинации в worpress?

У меня задача, выводить на первой странице пагинации 6 постов, а далее по 9. Пагинация на странице рубрики вида category-news.php.

Вот мой код в functions.php:

function limit_posts_per_home_page() 
{
	$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

	$first_page_limit = 6;
	$limit = get_option('posts_per_page');
	

	if( is_admin() ) {
		return;
	}


	if ( is_category('6') )
	{ 
		if ($paged == 1)
		{
			$limit = $first_page_limit;
		}
		else
		{
			$offset = $first_page_limit + (($paged - 3) * $limit);
			set_query_var('offset', $offset);   
		}
	}

	set_query_var('posts_per_archive_page', $limit);
	set_query_var('posts_per_page', $limit);
}
add_filter('pre_get_posts', 'limit_posts_per_home_page');


Но он не срабатывает. Лимит в 6 постов на первой странице не устанавливается
  • Вопрос задан
  • 59 просмотров
Пригласить эксперта
Ответы на вопрос 2
this_nicco
@this_nicco
Графоман, пижон, нарцисс
Настройки-Чтение:
1646308939080.png
Ответ написан
Комментировать
artzolin
@artzolin Куратор тега WordPress
php, WordPress разработка сайтов artzolin.ru
Для проверки, что вы находитесь на странице пагинации можно использовать условный тег is_paged()

add_action( 'pre_get_posts', 'limit_posts_per_home_page', 1 );
function limit_posts_per_home_page( $query ) {

	if ( $query->is_category( 6 ) && !$query->is_paged() ) {
		$query->set( 'posts_per_page', 6 );
	}

}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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