Wordpress 简码功能 - 分类模板分页
Wordpress shortcode function - pagination on taxonomy template
我有下面的代码,当我在 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();
}
?>
之前遇到过类似问题 -
我的问题是,posts per page
在 wp-admin 中设置为其他内容,导致 wordpress 对应该有多少页进行奇怪的计算。
如果你将这两个匹配起来,它应该可以正常工作。
并且在评论区看到,还好,也解决了这个问题
我有下面的代码,当我在 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();
}
?>
之前遇到过类似问题 -
我的问题是,posts per page
在 wp-admin 中设置为其他内容,导致 wordpress 对应该有多少页进行奇怪的计算。
如果你将这两个匹配起来,它应该可以正常工作。
并且在评论区看到,还好,也解决了这个问题