Задать вопрос

Не работает пагинация. Сайт на wordpress?

Имеется сайт на вордпресс. Шаблон делал сам, после того как внес все изменения и прописал все функции, сталкнулся с тем что не работает пагинация в рубрике НОВОСТИ. На сайте она одна. вот код файла category.php
<?php
/*
Template Name: Вывод записей категории
*/
?>
<?php get_header(); ?>
                <div class="cols wr-content">
<div class="col col_left">
<?php get_sidebar('left'); ?>
</div>
<div class="col col_right clearfix">
	<div class="col_wrapper">
		<div class="l_block">
			<article class="content" role="main">
                <div class="vert_uzor left"></div>
                <div class="vert_uzor right"></div>
				<div class="breadcrumbs">
                 <ul class="breadcrumbs"><?php if (function_exists('dimox_breadcrumbs')) dimox_breadcrumbs(); ?>
				 </ul>
				</div>
					            <?php
                                $query = new WP_Query( 'cat=2&posts_per_page=3' ); 
                                if( $query->have_posts() ){
                            	while( $query->have_posts() ){
                        		$query->the_post();
                        		?>
					<div class="all-news">

                    	<div class="all-news-item cf">

								<span class="all-news-item-date"><?php the_time('l | d.m.Y') ?></span>

								<div class="all-news-item-img">
								<a href="<?php the_permalink() ?>"
                                <?php 
                                $thumb = get_post_thumbnail_id();
                                $img_url = wp_get_attachment_url( $thumb,'medium' ); //get full URL to image (use "large" or "medium" if the images too big)
                                $image = aq_resize( $img_url, 333);
                                if($image) : ?> <a href="<?php the_permalink(); ?>"><img src="<?php echo $image ?>"/></a> 
                                <?php endif; ?>
                                </a><br/>
    							</div>

								<div class="all-news-item-content">

									<h6><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a><br/></h6>

									<p><?php the_excerpt(); ?></p><br /><br />

									<div class="btn-more"><br><a href="<?php the_permalink() ?>"><u>Подробнее</u></a></div>

								</div>

							</div>
	
					</div>
<?php
	}
	wp_reset_query(); // сбрасываем переменную $post
} 
else
	echo 'Записей нет.';
?>
						<div class="pagin">
						
                        	<nav class="navigation pagination" >
                        		
                        		<div class="nav-links">
                        		
 <?php wp_pagenavi(); ?>

                        
                                </div>
                        	</nav>				
	                    </div>
                    
			</article>
		</div>
	</div>

<?php get_sidebar('right'); ?>

</div>
</div>

				</div><!-- cols -->
			</div><!-- container -->
		</div><!-- maincontent -->
<?php get_footer(); ?>


страница открывается, вывод новостей работает, сам код все отрабатывает. пагинация выводится плагином wp_pagenavi, при нажатии на страницу два, в крошках видно что страница поменялась, путь меняется, но вот новости остаются те же.
  • Вопрос задан
  • 1301 просмотр
Подписаться 1 Средний 1 комментарий
Ответ пользователя Дмитрий К ответам на вопрос (2)
dimasmagadan
@dimasmagadan
а как они будут меняться, если вы каждый раз делаете выборку по одной и той же странице?

раз уж вы делаете кастомный запрос, то вот сюда
$query = new WP_Query( 'cat=2&posts_per_page=3' );
нужно передавать текущую страницу

но вообще все сделано неправильно. правильнее было повесить фильтр на pre_get_posts и там выводить нужное количество постов в категориях.
как сейчас у вас делается несколько лишних запросов на этой странице и паджинация будет работать не корректно.
допустим, у вас 100 постов в этой категории, в настройках сайта указано выводить по 10 (всего 10 страниц в архиве этой категории). вот этим кодом вы ожидаете, что будет выводится по 3 и в архиве категории должно получиться 34 страницы. но если попробуете открыть страницу /page/25, то оно выдаст ошибку
Ответ написан