Почему не срабатывает цикл и пагинация на старнице?
Есть страница 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 только только начал учить
немного изменил ваш код, так должно работать
<?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Спасибо! Заработала!
query_posts()
WP_Query()
Оба варианта решат Вашу задачу, возьмите тот который Вам ближе.
Что-то не то пальто у меня получается.
Собрал частями, но что-то всё равно не выводится пагинация
<?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;Может быть вызов пагинации делаю не в том месте?
хотя куда уже еще ставить ее...
хоть немного присматривайтесь к коду и логике переменных !
$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