我在多个循环结构中编码了自定义循环:
$q = get_posts( $args );
// Run your loop
echo '<div class="row">';
$i = 0;
foreach ( $q as $post ) : setup_postdata( $post );
$i++;
if ($i%4==0)
echo '</div><div class="row">';
get_template_part('loop');
endforeach;
wp_bs_pagination();
wp_reset_postdata();
除了我添加了CCD_ 1以加载分页之外。它只在每一页上重复相同的一组帖子。有什么建议吗?
不要将get_posts()
用于分页查询。get_posts
适用于非分页查询,但不适用于分页查询。
问题是,get_posts
只从WP_Query
返回$posts
属性,而不是完整的对象。此外,get_posts()
将'no_found_rows'=> true
传递给WP_Query
,从而合法地中断分页。
因为wp_bs_pagination();
0使用WP_Query
,所以我们也可以使用WP_Query
,它返回我们对查询进行分页所需的所有内容。请记住,我们需要将paged
参数添加到查询中,以便对其进行分页
我们可以按照重写您的查询
$args= [
'paged' => get_query_var( 'paged' ),
// Add any additional arguments here
];
$q = new WP_Query( $args );
// Run your loop
if( $q->have_posts() ) {
echo '<div class="row">';
$i=0;
while ( $q->have_posts() ) {
$q->the_post();
$i++;
if($i%4==0)
echo '</div><div class="row">';
get_template_part('loop');
}
wp_bs_pagination();
wp_reset_postdata();
}
您需要以某种方式将$q->max_num_pages
传递给wp_bs_pagination()
,以设置自定义查询的分页,但我不知道函数,所以我无法给出确切的解决方案。
试试这个,把它粘贴到你的函数中。php
function custom_pagination() {
global $wp_query;
$big = 999999999; // need an unlikely integer
$pages = paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => max( 1, get_query_var('paged') ),
'total' => $wp_query->max_num_pages,
'prev_next' => false,
'type' => 'array',
'prev_next' => TRUE,
'prev_text' => __('«'),
'next_text' => __('»'),
) );
if( is_array( $pages ) ) {
$paged = ( get_query_var('paged') == 0 ) ? 1 : get_query_var('paged');
echo '<ul class="pagination">';
foreach ( $pages as $page ) {
echo "<li>$page</li>";
}
echo '</ul>';
}
}
然后使用函数custom_page()
从这里获得解决方案:http://www.ordinarycoder.com/paginate_links-class-ul-li-bootstrap/