WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

Не работает пагинация по рубрикам

Вывожу анонсы статей, вызываю пагинацию. Появляется необходимое кол-во страниц. Но при клике на следующую или любую другую остается та же страница.

Вот код через который вывожу:

<?php while (have_posts()) : the_post();?>

<div class="news-view">
	<a href="<?php the_permalink(); ?>"><h3><?php the_title(); ?></h3></a>
	<div class="d-flex">
		<div class="main-wrap">
			<a href="<?php the_permalink(); ?>">
				<?php echo get_the_post_thumbnail( $id, array(200,200) ); ?>
			</a>
		</div>
		<div class="news-txt">
			<p><?php the_excerpt_max_charlength(250); ?></p>
			<a href="<?php the_permalink(); ?>">подробнее</a>
		</div>
	</div>
</div>
<?php endwhile; ?>

<?php the_posts_pagination(); ?>

<?php  wp_reset_query();?>
Заметки к вопросу:
j-nokia 5 мес назад

Было 3 ошибки. Итак поэтапноe решение, что я сделал:

  1. Создал для каждой рубрики страницу через админку и присвоил шаблон - этого делать нельзя пагинация ломается. Для рубрик вообще не надо создавать отдельные страницы через админку.
  2. Нарушил иерархию шаблонов wordpress. Если вы создаете несколько рубрик и для каждой рубрики используете отдельный шаблон страницы то именуйте файлы category-(id-рубрики).php например category-10.php WP ищет в первую очередь эти страницы.
  3. Не правильное определение переменной (только в моем случае), у остальных вроде как работает укороченный вариант записи переменной $paged
$paged = 1;

if(get_query_var('paged')) {
	$paged = get_query_var('paged');
} elseif(get_query_var('page')) {
	$paged = get_query_var('page');
}

$query = new WP_Query(array(
	'paged' => $paged,
	'cat' => 10,
));

После всех манипуляций абсолютно любой тип пагинации стал корректно работать

0
j-nokia
5 месяцев назад
  • 0
    el-lable235 cайт: el-lable.ru

    Что-то мне подсказывает что вначале вы должны определить $args, а затем получить $query

    j-nokia 5 мес назад

    пробовал для начала задавать $args, но так же нет результата.
    Пробовал через цикл get_posts так же не работает.

    <?php 
    	$args = array (
    		'cat' => 10,
    		'paged' =>  get_query_var( 'page' )
    		);
    	$query = new WP_Query( $args );
    ?>

    если важно сделал так) no results. 4 день ничего толкого на ум не приходит

    Kama 5 мес назад

    Вот это удали из кода - это лишнее и вообще неправильно все написано!

    j-nokia 5 мес назад

    этого уже нет, сейчас имеет такой вид:

    <?php
    // Цикл WordPress
    	$paged = 1;
    		if(get_query_var('paged')) {
    	$paged = get_query_var('paged');
    		} elseif(get_query_var('page')) {
    	$paged = get_query_var('page');
    		}
    
    	$query = new WP_Query(array(
    		'paged' => $paged,
    		'cat' => 10,
    	));
    
    	if( $query->have_posts() ){ while( $query->have_posts() ){ $query->the_post(); ?>
    	<div class="news-view">
    		<a href="<?php the_permalink(); ?>"><h3><?php the_title(); ?></h3></a>
    		<div class="d-flex">
    			<div class="main-wrap">
    				<a href="<?php the_permalink(); ?>">
    					<?php echo get_the_post_thumbnail( $id, array(200,200) ); ?>
    				</a>
    			</div>
    			<div class="news-txt">
    				<p><?php the_excerpt_max_charlength(250); ?></p>
    				<a href="<?php the_permalink(); ?>">подробнее</a>
    			</div>
    		</div>
    	</div>
    
    <?php }//конец while ?>
    
    <?php wp_pagenavi(); ?>
    
    <?php wp_reset_postdata(); ?>
    
    <?php } else {
    // текст/код, если постов нет
    echo "<h2>УПС... Что то пошло не так! :(</h2>";
    }//конец if
    ?>

    Но спасибо за подсказку

    Комментировать
  • 0
    kolshix541 cайт: paxtoy.com

    воткнул первый код из этого ответа (ниже по ссылке) и все завелось, но может у вас ВП и тема чегото не пускают, тут не подскажу никак

    вопрос

    код под себя уже подгоните.

    j-nokia 5 мес назад

    На стандартной теме, для стандартного шаблона да заведется и у меня тоже). Но здесь идет несколько рубрик, каждая запись выводится на отдельной странице по рубрике. Посты выводятся через cat => ID. И пагинация на этих условиях отказывается работать

    kolshix 5 мес назад

    я проверял на странице data.php и на отдельных шаблонах и вставлял 'cat' => 'ID'
    все завелось (на удивление, обычно не работает)

    проверьте пагинацию , может в теме стоит своя

    j-nokia 5 мес назад

    Своей нет, пробовал через плагин wp_pagenavi тоже не рагирует.
    Нашел инфу. Моя последовательность действий была такая. Создал шаблон страницы, создал рубрику, создал страницу. На кодексе говорили, что для рубрик не надо создавать свои страницы - они по умолчанию создаются архивные. так вопрос как тогда перейти на эти архивные страницы не через админку?

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация