使用自定义帖子类型,效果很好。显示所有自定义帖子,但我不能让分页正常工作。
一旦我点击下一页,页面就会被重定向到/ 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;
答案 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>