wordpress - Wordpress 分页功能不起作用(什么都不显示)
问题描述
我要疯了,想弄清楚为什么我的分页没有出现。我会设置场景:
我有一个页面“category.php”。在此页面中,我为所有分类帖子设置了自定义查询。它们是自定义帖子类型,并显示该类别的自定义帖子。我的查询如下:
我已经尝试过这个功能:the_post_pagination();
global $wp_query;
$category = get_category(get_query_var('cat'));
if ( get_query_var('paged') ) { $paged = get_query_var('paged'); }
elseif ( get_query_var('page') ) { $paged = get_query_var('page'); }
else { $paged = 1; }
$cat = new WP_Query(
array(
'post_type' => 'shield',
'category_name' => $category->name,
'posts_per_page' => 10,
'paged' => $paged
));
if ( $cat->have_posts() ) {
while ( $cat->have_posts() ) {
$cat->the_post();
}
mom_pagination($cat->max_num_pages);
wp_reset_query();
}
mom_pagination 函数代码在这里:
function mom_pagination($pages = '', $range = 10)
{
global $wp_query;
if ( get_query_var('paged') ) { $paged = get_query_var('paged'); }
elseif ( get_query_var('page') ) { $paged = get_query_var('page'); }
else { $paged = 1; }
if (mom_option('pagi_type') == false) {
$showitems = ($range * 2)+1;
if(empty($paged)) $paged = 1;
if($pages == '' && $pages != 0)
{
global $wp_query;
$pages = $wp_query->max_num_pages;
if(!$pages)
{
$pages = 1;
}
}
if(1 != $pages)
{
echo "<div class='pagination'>";
if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<a href='".get_pagenum_link(1)."'>«</a>";
if($paged > 1 && $showitems < $pages) echo "<a href='".get_pagenum_link($paged - 1)."'>‹</a>";
for ($i=1; $i <= $pages; $i++)
{
if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems ))
{
echo ($paged == $i)? "<span class='current'>".$i."</span>":"<a href='".get_pagenum_link($i)."' class='inactive' >".$i."</a>";
}
}
if ($paged < $pages && $showitems < $pages) echo "<a href='".get_pagenum_link($paged + 1)."'>›</a>";
if ($paged < $pages-1 && $paged+$range-1 < $pages && $showitems < $pages) echo "<a href='".get_pagenum_link($pages)."'>»</a>";
echo "</div>\n";
}
} else {
$big = 999999999; // need an unlikely integer
echo "<div class='pagination'>";
echo paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => max( 1, $paged ),
'total' => $pages
) );
echo "</div>\n";
}
}
我希望它应该显示分页。
解决方案
经过一整天的努力终于找到了解决办法。我在我的functions.php文件中编写了这两个函数,最后我得到了预期的结果。
function remove_page_from_query_string($query_string)
{
if ($query_string['name'] == 'page' && isset($query_string['page'])) {
unset($query_string['name']);
// 'page' in the query_string looks like '/2', so i'm spliting it out
list($delim, $page_index) = split('/', $query_string['page']);
$query_string['paged'] = $page_index;
}
return $query_string;
}
// I will kill you if you remove this. I died two days for this line
add_filter('request', 'remove_page_from_query_string');
// following are code adapted from Custom Post Type Category Pagination Fix by jdantzer
function fix_category_pagination($qs){
if(isset($qs['category_name']) && isset($qs['paged'])){
$qs['post_type'] = get_post_types($args = array(
'public' => true,
'_builtin' => false
));
array_push($qs['post_type'],'post');
}
return $qs;
}
add_filter('request', 'fix_category_pagination');
推荐阅读
- python-3.x - 将 ObjectId 作为 type:String 从 mongoexport 转换回 type:ObjectId 在摄取到 Mongo 数据库后
- javascript - 使用 javascript 的简单数组求和(单个整数)
- ios - 如何为带有阴影的 UIView 赋予椭圆形状
- java - 注释 @CrossOrigin("*") 不起作用
- oracle - Oracle sqlplus 在将参数传递给 sql 脚本时从命令行执行 sql 脚本
- ruby-on-rails - 如何摆脱“下载反应开发工具”?
- c++ - C++ 调用使用覆盖函数的父类函数
- python - 我正在使用 python3.7 进行 RSS 提要新闻抓取。我没有得到确切的信息。帮我获取正确的数据
- python - 如何连续搜索和替换,直到在python中找不到字符串?
- apache-kafka-streams - 是否可以在 Spring Cloud Stream Kafka Streams 3.0 Binder 样式 API 方法上使用 @KafkaStreamsStateStore 注释?