Я хочу ограничить 3 фрагмента блога на странице и включить разбивку на страницы для дополнительных страниц. Вот что я до сих пор, но разбиение на страницы не работает.
<div id="page-content"> <?php $args = array( 'posts_per_page' =>3, 'order'=> 'ASC', 'orderby' => 'title' ); $postslist = get_posts( $args ); foreach ( $postslist as $post ) : setup_postdata( $post ); ?> <div> <a href="<?php the_permalink(); ?>"><?php the_title(); ?> </a><br /> <small><?php the_time('F jS, Y') ?> by <?php the_author(); ?></small> <?php the_excerpt(); ?><br /> </div> <?php endforeach; wp_reset_postdata();?> </div> <?php posts_nav_link( $sep, $prelabel, $nextlabel ); ?> <?php posts_nav_link(); ?> <div class="navigation"> <div class="alignleft"><?php posts_nav_link('','','« Previous Entries') ?></div> <div class="alignright"><?php posts_nav_link('','Next Entries »','') ?></div> </div> <!--#page-content-->
Сладкие и короткие, не используйте get_posts
если вам нужны разбитые запросы. get_posts
отлично работает, если вы собираетесь использовать пользовательский запрос, который не нуждается в разбивке на страницы, но на самом деле это становится сложной проблемой, когда вам нужно вводить разбивку на страницы.
Я думаю, что наиболее простым и наиболее подходящим здесь является использование WP_Query
для создания настраиваемого запроса, то есть если вы не можете использовать pre_get_posts
для изменения основного запроса, чтобы получить желаемый результат из основного запроса.
Кроме того, эти две строки не нужны, вы должны удалить эти
<?php posts_nav_link( $sep, $prelabel, $nextlabel ); ?> <?php posts_nav_link(); ?>
Я думаю, что next_posts_link()
и previous_posts_link()
лучше использовать с пользовательским запросом, то есть с WP_Query
. Однако вы должны просто запомнить параметр $max_pages
когда используете пользовательский запрос, иначе постраничная разбивка на страницы
С небольшими изменениями ваш запрос должен выглядеть так:
<div id="page-content"> <?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $args = array( 'posts_per_page' =>3, 'order'=> 'ASC', 'orderby' => 'title', 'paged' => $paged ); $postslist = new WP_Query( $args ); if ( $postslist->have_posts() ) : while ( $postslist->have_posts() ) : $postslist->the_post(); ?> <div> <a href="<?php the_permalink(); ?>"><?php the_title(); ?> </a><br /> <small><?php the_time('F jS, Y') ?> by <?php the_author(); ?></small> <?php the_excerpt(); ?><br /> </div> <?php endwhile; ?> <div class="navigation"> <div class="alignleft"><?php next_posts_link( '« Previous Entries', $postslist->max_num_pages ); ?></div> <div class="alignright"><?php previous_posts_link( 'Next Entries »' ); ?></div> </div> <?php wp_reset_postdata(); endif; ?> </div>