wordpress自定义帖子类型循环不适用于分页

时间:2017-07-05 07:18:42

标签: wordpress

使用自定义帖子类型,效果很好。显示所有自定义帖子,但我不能让分页正常工作。

一旦我点击下一页,页面就会被重定向到/ page / 2 /,这不会被取消。

直到现在我找不到在线工作的解决方案,为什么这不起作用?

这是我使用的代码:

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

$query = new WP_Query( array( 
    'post_type'      => 'projects', 
    'posts_per_page' => 5,
    'paged'          => $paged                                
) );

// the loop 
if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post();

    the_title(); 

endwhile; 

    next_posts_link( '← '.__( 'next' , 'ff' ) ,  $query->max_num_pages );
    previous_posts_link( '← '.__( 'prev' , 'ff' ) , $query->max_num_pages );

    wp_reset_postdata();

endif;

2 个答案:

答案 0 :(得分:0)

您可以为分页编写此代码:

$total_pages = $query->max_num_pages;

    if ($total_pages > 1){

        $current_page = max(1, get_query_var('paged'));

        echo paginate_links(array(
            'base' => get_pagenum_link(1) . '%_%',
            'format' => '/page/%#%',
            'current' => $current_page,
            'total' => $total_pages,
            'prev_text'    => __('« prev'),
            'next_text'    => __('next »'),
        ));
    }

另一个选项是你可以在function.php中添加重写规则

  function custom_rewrite_basic() {
  add_rewrite_rule('^leaf/([0-9]+)/?', 'index.php?page_id=$matches[1]', 'top');
}
add_action('init', 'custom_rewrite_basic');

根据您的要求修改它,然后将其冲洗

<?php flush_rewrite_rules( $hard ); ?>

有关详细信息,请参阅此链接以获取WordPress文档: https://codex.wordpress.org/Rewrite_API/add_rewrite_rule

希望这能为您提供解决方案。

答案 1 :(得分:0)

您可以为自定义帖子分页编写此代码:

<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
if ($paged == "1") {
    $query = new WP_Query( array( 
    'post_type'      => 'projects', 
    'posts_per_page' => 5,
    'offset' => 0                               
) );
} else {
    $offset = $paged * 5;
    $offset = $offset - 5;
   $query = new WP_Query( array( 
    'post_type'      => 'projects', 
    'posts_per_page' => 5,
    'offset' => $offset                                
) );
}

if ($query->have_posts()) :
while ($query->have_posts()) : $query->the_post();
    /*Your Code */

endwhile;
?>
<div class="pagination-grp">
    <?php
    $big = 999999999; // need an unlikely integer
    //$i=1;

    echo paginate_links(array(
        'base' => str_replace($big, '%#%', esc_url(get_pagenum_link($big))),
        'format' => '?paged=%#%',
        'current' => max(1, get_query_var('paged')),
        'prev_text' => __('<'),
        'next_text' => __('>'),
        'total' => $query->max_num_pages

    ));
    wp_reset_postdata();
    endif;
    ?>
</div>