php - 分页链接不反映帖子计数
问题描述
<? get_header() ;?>
<?
$cat_param = 'select-category';
if (strpos($_SERVER['REQUEST_URI'], $cat_param)) {
$category_id = htmlspecialchars($_GET[$cat_param]);
} else {
$category_id = null;
}
?>
<article id="post-<? the_ID(); ?>" <? post_class('bg-white'); ?> data-file="<? echo basename(__FILE__); ?>">
<div class="wrap-outer">
<div class="py-5 py-md-6 py-lg-7 py-xl-8 wrap-inner">
<div class="container-fluid container-lg">
<div class="row">
<div class="col-12 col-md-8">
<form method="" action="<? echo get_post_type_archive_link('pcm_review'); ?>/">
<div class="form-group posts-filter">
<div class="input-group">
<div class="input-group-prepend">
<label class="input-group-text" for="review-select-category"><i class="fas fa-filter"></i></label>
</div>
<?
$args_cats = array(
'show_option_all' => 'Show All',
'orderby' => 'name',
'order' => 'ASC',
'show_count' => 0,
'echo' => 1,
'selected' => $category_id,
'name' => $cat_param,
'id' => $cat_param,
'class' => 'select-category form-control ml-auto',
'taxonomy' => 'category',
'hide_if_empty' => false,
'option_none_value' => -1,
'value_field' => 'term_id',
'required' => false,
);
wp_dropdown_categories( $args_cats );
?>
</div>
</div>
<script type="text/javascript">
jQuery(function() {
$('#select-category').change(function() {
this.form.submit();
});
});
</script>
<hr>
</form>
<?
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args_reviews = array(
'post_type' => 'pcm_review',
'cat' => $category_id,
'paged' => $paged,
);
$query_reviews = new WP_Query( $args_reviews );
if ( $query_reviews->have_posts() ) {
while ( $query_reviews->have_posts() ) {
$query_reviews->the_post();
$content = get_post_meta(get_the_ID(), 'pcm_review_content', true);
$name = get_post_meta(get_the_ID(), 'pcm_review_name', true);
$rating_str = get_post_meta(get_the_ID(), 'pcm_review_rating', true);
$rating_int = intval($rating_str);
$rating_star = '<i class="fas fa-star mr-1 text-warning"></i>';
$rating_stars = str_repeat($rating_star, $rating_int);
?>
<div id="post-<? the_ID(); ?>" <? post_class(''); ?>>
<p>
<span class="review-stars"><? echo $rating_stars; ?></span><br>
<b><? the_title(); ?></b>
</p>
<div class="review-content">
<? echo $content; ?>
</div>
<div class="justify-content-between row small text-muted">
<div class="col-auto">
<i class="fas fa-user mr-2"></i><span class="review-name"><? echo $name; ?></span>
</div>
<div class="col-auto">
<i class="fas fa-tag mr-2"></i><span class="review-categories"><? echo get_the_category_list(', '); ?></span>
</div>
</div>
<hr>
</div>
<?
}
the_posts_pagination();
} else {
pcm_no_results();
}
wp_reset_postdata();
?>
</div>
<div class="col-12 col-md-4">
<div class="sidebar-wrap sticky-top">
<? get_template_part('template-parts/aside-blog'); ?>
<? get_template_part('template-parts/aside-reviews'); ?>
</div>
</div>
</div>
</div>
</div>
</div>
</article>
<? get_footer() ;?>
挣扎于分页问题,非常感谢任何帮助。我在这里或其他论坛的搜索没有任何进展,所以我想寻求帮助。
背景
我有一个支持类别分类的推荐/评论的自定义帖子类型。我的模板文件包含一个下拉列表/选择列表,允许访问者选择一个类别,如果他们想过滤评论并且只查看他们选择的类别的评论。
问题
好的,假设我总共有 10 条评论,其中只有 5 条被分配到“A 类”。如果访问者按“A 类”过滤帖子,他们仍然会看到分页链接,好像有 10 个帖子而不是 5 个属于“A 类”的帖子。我希望这是有道理的。控制台或调试日志中没有错误。
代码解释
第 5 行开始了一个小片段,只是为了让后面的文件更容易。如果在 URL 中找到类别参数,则将 var 设置为类别 ID 的值。如果不是,我们将类别 ID 设置为 null。
第 20 行开始包含wp_dropdown_categories()
输出我的类别列表的函数的表单。我们将选定的参数设置为与第 5 行中的类别 ID 相同的值。表单操作属性设置为评论的主存档 url,这样如果选择了一个类别并且用户在第一个以外的任何页面上,他们被指向根评论存档网址。
第 47 行只是在选择下拉列表中的选项时强制表单提交。
第 57 行只是告诉 WordPress 我们当前在哪个页面上,然后是查询的其余部分。
解决方案
通过将'total'=> $query_reviews->max_num_pages
参数添加到我的分页函数,这将输出正确数量的分页链接,因为它使用我的查询而不是主查询的 max_num_pages 的值。危机化解了。
推荐阅读
- javascript - 如何在对象的字符串中调用函数?
- javascript - 如何即时发送 UTC 格式的长值?
- php - 存储 100 万行的最佳和最安全的方法
- python - python - 嵌套字典作为参数
- c# - 获取包含某个属性值的 jtoken 列表
- axios - $axios.onError 不是函数
- java - WebSphere 部署错误 - WASX7109E:安装任务“MapResRefToEJB”的数据不足
- java - 无法运行 Maven Google Standard App Engine 1.9.68 Archetype
- php - 带有 smarty 的 cookie 警报
- macos - 如何在 mac 上将 .pem 文件转换为 .ppk 文件?