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

Есть страница category.php
На ней вывожу пост:

<?php if (have_posts()) { while (have_posts()) { the_post(); ?>
				<article class="post">
					<div class="entry-header cf">
						<h1><a href="<?php the_permalink(); ?>" title=""><?php the_title(); ?></a></h1>
						<p class="post-meta">
							<time class="date" datetime="2014-01-14T11:24"><?php the_time('F jS, Y'); ?></time>
						   /
						   <span class="categories">
						   <?php the_tags( '', ' / ' ) ?>
						   </span>
						</p>
					 </div>
					 <div class="post-thumb">
						<a href="<?php the_permalink(); ?>" title=""><?php the_post_thumbnail( 'post_thumb' ); ?></a>
					 </div>
					 <div class="post-content">
						<?php the_excerpt(); ?>
					 </div>
				  </article> <!-- post end -->
			   <?php } //конец while ?>
			   <?php the_posts_pagination(); ?>
			   <?php } //конец if ?>

Всё замечательно работает!

Но есть страница page.php, где абсолютно всё одинаковое!
Мне на этой странице (page.php) необходимо вывести такие же посты с пагинацией.
Вставил этот же код php и теперь ничего не выводится в результате.

Пробовал такой вариант, но он выводит только посты, пагинацию не хочет выводить или я где-то, что-то упустил!

<?php 
			   // параметры по умолчанию
			   $posts = get_posts( array(
				 'numberposts' => 5,
				 'category'    => 0,
				 'orderby'     => 'date',
				 'order'       => 'DESC',
				 'include'     => array(),
				 'exclude'     => array(),
				 'meta_key'    => '',
				 'meta_value'  =>'',
				 'post_type'   => 'post',
				  'suppress_filters' => true, // подавление работы фильтров изменения SQL запроса
			   ));

			   foreach( $posts as $post ){ setup_postdata($post); ?>
				 <!-- формат вывода the_title() ... -->
				 <article class="post">
				   <div class="entry-header cf">
					  <h1><a href="<?php the_permalink(); ?>" title=""><?php the_title(); ?></a></h1>
					  <p class="post-meta">
						 <time class="date" datetime="2014-01-14T11:24"><?php the_time('F jS, Y') ?></time>
						 /
						 <span class="categories">
							<?php the_tags( '', ' / ' ); ?>
						 </span>
					  </p>
				   </div>
				   <div class="post-thumb">
					  <a href="<?php the_permalink(); ?>" title=""><?php the_post_thumbnail( 'post_thumb' ); ?></a>
				   </div>
				   <div class="post-content">
					<?php the_excerpt(); ?>
				 </div>
			   </article>
			   <?php } ?>

			   <?php wp_reset_postdata(); 
			   get_the_posts_pagination(); ?>

Подскажите пожалуйста, где проблема?!
Если что-то не понятно написал, пожалуйста скажите, по скольку WP только только начал учить

0
sniper
6.4 года назад
  • 0
    Glum 697

    немного изменил ваш код, так должно работать

    <?php
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    
    $query = new WP_Query(array(
    	'posts_per_page' => 1,
    	'paged' => $paged
    ));
    
    // Цикл WordPress
    if( $query->have_posts() ){ while( $query->have_posts() ){ $query->the_post(); ?>
    
    	<!-- // здесь оформляем данные для каждого поста в цикле -->
    	<article class="post">
    		<div class="entry-header cf">
    			<h1><a href="<?php the_permalink(); ?>" title=""><?php the_title(); ?></a></h1>
    			<p class="post-meta">
    				<time class="date" datetime="2014-01-14T11:24"><?php the_time('F jS, Y') ?></time>
    				/
    				<span class="categories">
    								 <?php the_tags( '', ' / ' ); ?>
    							   </span>
    			</p>
    		</div>
    		<div class="post-thumb">
    			<a href="<?php the_permalink(); ?>" title=""><?php the_post_thumbnail( 'post_thumb' ); ?></a>
    		</div>
    		<div class="post-content">
    			<?php the_excerpt(); ?>
    		</div>
    	</article><!-- конец -->
    <?php }//конец while ?>
    <?php
    	$max_page = $query->max_num_pages;
    echo paginate_links( array(
    	'base'    => str_replace( $max_page, '%#%', esc_url( get_pagenum_link( $max_page ) ) ),
    	'format'  => '?paged=%#%',
    	'current' => max( 1, get_query_var('paged') ),
    	'total'   => $max_page,
    ) );
    
    	?>
    	<?php wp_reset_postdata(); ?>
    
    <?php } else {
    	// текст/код, если постов нет
    	echo "нет постов";
    }//конец if
    sniper 6.4 года назад

    Спасибо! Заработала!

    Комментировать
  • 0
    Maestro 42 bagroup.pro

    query_posts()
    WP_Query()

    Оба варианта решат Вашу задачу, возьмите тот который Вам ближе.

    sniper 6.4 года назад

    Что-то не то пальто у меня получается.
    Собрал частями, но что-то всё равно не выводится пагинация

    <?php
    			// Запрос. $args - параметры запроса
    			//query_posts( $args );
    			query_posts(array( 
    			   'posts_per_page' => 1, 
    			   'nopaging' => false,
    			   'paged' => $paged
    			));
    			// Цикл WordPress
    			$paged = (get_query_var('page')) ? get_query_var('page') : 1;
    			if( have_posts() ){ while( have_posts() ){ the_post(); ?>
    
    					 <!-- // здесь оформляем данные для каждого поста в цикле -->
    					 <article class="post">
    						   <div class="entry-header cf">
    							 <h1><a href="<?php the_permalink(); ?>" title=""><?php the_title(); ?></a></h1>
    							 <p class="post-meta">
    							   <time class="date" datetime="2014-01-14T11:24"><?php the_time('F jS, Y') ?></time>
    							   /
    							   <span class="categories">
    								 <?php the_tags( '', ' / ' ); ?>
    							   </span>
    							 </p>
    						   </div>
    						   <div class="post-thumb">
    							 <a href="<?php the_permalink(); ?>" title=""><?php the_post_thumbnail( 'post_thumb' ); ?></a>
    						   </div>
    						   <div class="post-content">
    						   <?php the_excerpt(); ?>
    						 </div>
    						</article><!-- конец -->
    				<?php }//конец while ?>
    				 <?php wp_reset_query(); ?>
    				 <?php //the_posts_pagination(); ?>
    			<?php //get_the_posts_pagination(); ?>
    			<?php echo get_the_posts_pagination(); ?>
    
    			<?php } else {
    			   // текст/код, если постов нет
    			   echo "нет постов";
    			}//конец if ?>

    за эту часть кода конечно не уверен, нужна ли она или нет:

    $paged = (get_query_var('page')) ? get_query_var('page') : 1;

    Может быть вызов пагинации делаю не в том месте?
    хотя куда уже еще ставить ее...

    kolshix 6.4 года назад

    хоть немного присматривайтесь к коду и логике переменных !

    $paged = (get_query_var('page')) ? get_query_var('page') : 1;

    эта часть как раз и отвечает за формат пагинации (грубо говоря), она должна идти либо перед query_posts либо в самом query_posts.

                $paged = (get_query_var('page')) ? get_query_var('page') : 1;
    			query_posts(array( 
    			   'posts_per_page' => 1, 
    			   'nopaging' => false,
    			   'paged' => $paged
    			));
    			// Цикл WordPress
    
    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация