分页链接不反映 Post 计数
Pagination Links Do Not Reflect Post Count
<? 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() ;?>
遇到分页问题,非常感谢您的帮助。我在这里或其他论坛搜索没有取得任何进展,所以我想寻求帮助。
背景
我有一个自定义 post 类型 testimonials/reviews,它支持类别分类法。我的模板文件包含一个 dropdown/select-list 允许访问者选择一个类别,如果他们想过滤评论并且只看到他们选择的类别的评论。
问题
好吧,假设我总共有 10 条评论,其中只有 5 条被分配到“类别 A”。如果访问者按“类别 A”过滤 post,他们仍然会看到分页链接,就好像有 10 个 post 而不是属于“类别 A”的 5 个。我希望这是有道理的。
控制台或调试日志中没有错误。
代码解释
第 5 行开始一个小片段,只是为了让文件后面的事情更容易。如果在 URL 中找到类别参数,则将 var 设置为类别 ID 的值。如果不是,我们将类别 ID 设置为空。
第 20 行启动包含 wp_dropdown_categories()
函数的表单,该函数输出我的类别列表。我们将 selected 参数设置为与第 5 行中的类别 ID 相同的值。表单操作属性设置为评论的主存档 url,这样如果选择了一个类别并且用户在其他任何页面上与第一个相比,它们被指向根审查档案 url。
第 47 行只是在从下拉列表中选择一个选项时强制提交表单。
第 57 行只是告诉 WordPress 我们当前在哪个页面,然后是查询的其余部分。
通过将 'total'=> $query_reviews->max_num_pages
参数添加到我的分页函数,这会输出正确数量的分页链接,因为它使用我的查询的 max_num_pages 值而不是主查询。避免了危机。
<? 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() ;?>
遇到分页问题,非常感谢您的帮助。我在这里或其他论坛搜索没有取得任何进展,所以我想寻求帮助。
背景
我有一个自定义 post 类型 testimonials/reviews,它支持类别分类法。我的模板文件包含一个 dropdown/select-list 允许访问者选择一个类别,如果他们想过滤评论并且只看到他们选择的类别的评论。
问题
好吧,假设我总共有 10 条评论,其中只有 5 条被分配到“类别 A”。如果访问者按“类别 A”过滤 post,他们仍然会看到分页链接,就好像有 10 个 post 而不是属于“类别 A”的 5 个。我希望这是有道理的。 控制台或调试日志中没有错误。
代码解释
第 5 行开始一个小片段,只是为了让文件后面的事情更容易。如果在 URL 中找到类别参数,则将 var 设置为类别 ID 的值。如果不是,我们将类别 ID 设置为空。
第 20 行启动包含 wp_dropdown_categories()
函数的表单,该函数输出我的类别列表。我们将 selected 参数设置为与第 5 行中的类别 ID 相同的值。表单操作属性设置为评论的主存档 url,这样如果选择了一个类别并且用户在其他任何页面上与第一个相比,它们被指向根审查档案 url。
第 47 行只是在从下拉列表中选择一个选项时强制提交表单。
第 57 行只是告诉 WordPress 我们当前在哪个页面,然后是查询的其余部分。
通过将 'total'=> $query_reviews->max_num_pages
参数添加到我的分页函数,这会输出正确数量的分页链接,因为它使用我的查询的 max_num_pages 值而不是主查询。避免了危机。