Оформление первой записи в цикле wordpress?

Пытаюсь оформить первую запись из цикла, нашел код. Проблема в том, что пагинация не работает. Если перейти на page/2, то там отображаются записи первой страницы. У меня есть подозрения, что я что-то сломал в коде. Подскажите, пожалуйста, что нужно поправить.
<div id="photo">	
		        <?php
					// Запускаем отдельный цикл (loop) независимо от контента главной
					$args = array (
					  'post_type'              => array( 'post' ),
					  'post_status'            => array( 'publish' ),
					  'posts_per_page'			=> 24,

					);

					// The Query
					$curstom_query = new WP_Query( $args );

					// The Loop
					if ( $curstom_query->have_posts() ) {
					  $postCount = 0;
					  while ( $curstom_query->have_posts() ) {
						$curstom_query->the_post();
						// тут делаем что нам надо с постами 
						$postCount++;
						?>
						
						<?php 
						if($postCount < 2){
						?>
	
	

		            <div <?php post_class('big-post'); ?>>
					<a href="<?php the_permalink(); ?>" rel="bookmark">
					<?php the_post_thumbnail(array(445, 325, true)); ?>
					</a>
		            </div>
					
					
		       <?php } else {?>
					
		            <div <?php post_class('small-post'); ?>>
					<a href="<?php the_permalink(); ?>" rel="bookmark">
					<?php the_post_thumbnail(array(215, 130, true)); ?>
					</a>
		            </div>
						
	
		           <?php }
			
						  }
						} else {
						  // Тут выводим сообщение о том, что таких постов не найдено (если они реально не найдены)
						  ?>
						  <h3 class="not-found">Извините. Таких постов не найдено</h3>
						  <?php
						}

						// убиваем кастомный луп
						wp_reset_postdata();
					  ?>
</div>

<?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } ?>
  • Вопрос задан
  • 643 просмотра
Решения вопроса 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
1. Зачем вам custom_query, изменения в основной запрос делайте через хук pre_get_posts
2. Проверяйте первый пост по индексу current_post объекта $wp_query
// В functions.php, модифицируем основной запрос:
function modify_my_query( $query ) {
    if ( $query->is_main_query() && ! $query->is_admin() ) {
        $query->set( 'posts_per_page', 24 );
    }
}
add_action( 'pre_get_posts', 'modify_my_query' );

// В самом шаблоне, для изоляции первого поста в стандартном цикле:
if ( have_posts() ) :

    while ( have_posts() ) : the_post();

        if ( $wp_query->current_post == 0 ) : // Это первый пост в цикле

            // вот тут произвольный код для вывода/оформления первого поста

        else : // Это все остальные посты

            // а тут - для всех остальных

        endif;

    endwhile;

endif;

И пагинация будет работать, и граблей никаких нет.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
trampick
@trampick
Веб-разработчик
//не хватает аргумента paged
$args = array (
            'post_type'              => array( 'post' ),
            'post_status'            => array( 'publish' ),
            'posts_per_page'			=> 24,

          );
//Вместо этого должно быть так
$paged = get_query_var('paged', 1);//Получаем номер страницы
$args = array (
            'post_type'              => array( 'post' ),
            'post_status'            => array( 'publish' ),
            'posts_per_page'			=> 24,
            'paged' => $paged
          );
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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