当我在wp页面上使用它时,我有下面的代码正常工作。关于分类模板(taxonomy.php)分页开始正常工作,但在几页后查询仍然有帖子显示404错误中断。
例如,它有29个帖子要显示,每页有4个帖子。一直到第6页一切正常,当我点击下一页(第7页)时,它会显示index.php模板,其中包含404错误,而查询结果应该会创建8页。
<?php
function get_featured_projects_shortcode_function(){
$return = '';
global $paged;
if ( get_query_var('paged') ) {
$paged = get_query_var('paged');
} elseif ( get_query_var('page') ) {
$paged = get_query_var('page');
} else {
$paged = 1;
}
$posts_per_page = 4;
$category_name = single_cat_title("", false);
$args = array(
'post_type' => 'project',
'tax_query' => array(
array(
'taxonomy' => 'project_category',
'field' => 'name',
'terms' => array( $category_name ) ),
),
'posts_per_page' => $posts_per_page,
'post_status' => 'publish',
'orderby' => 'date',
'order' => 'DESC',
'paged' => $paged,
'page' => $paged
);
$query = new WP_Query($args);
$total_found_posts = $query->found_posts;
$total_page = ceil($total_found_posts / $posts_per_page);
if ( $query->have_posts() ) {
$return .= '<div class="proj-holder">';
while ( $query->have_posts() ) {
$query->the_post();
$return .= get_the_title();
}
$return .= '</div>';
}
if(function_exists('wp_pagenavi')) {
$return .='<div class="page-navigation">'.wp_pagenavi(array('query' => $query, 'echo' => false)).'</div>';
} else {
$return.='<div class="posts-links-next-prev">
<span class="prev-posts-links">'.get_previous_posts_link('<< Previous ').'</span>
<span class="next-posts-links">'.get_next_posts_link(' Next >>', $total_page).'</span>
</div>';
}
return $return;
wp_reset_postdata();
}
?>
答案 0 :(得分:1)
之前有过类似的问题 -
我的问题是,posts per page
被设置为wp-admin中的其他内容,而wordpress中的结果会对应该有多少页进行奇怪的计算。
如果你匹配这两个,它应该可以正常工作。
通过评论部分,我们可以看到,幸运的是,它也解决了这个问题。