我有一个循环遍历每个标记并显示每个标记的10个帖子。这有效,但我想将其设置为每页仅显示20个帖子,因此第1页显示标签1帖子,标签2帖子,然后第2页显示标签3帖子,标签4帖子等
我不知道该怎么做。我是否需要将foreach循环放在另一个数组中并在新数组中定义posts_per_page?或者是否需要使用pre_get_posts设置函数?
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$car_group_terms = get_terms( 'post_tag' );
foreach ( $car_group_terms as $car_group_term ) {
$car_group_query = new WP_Query( array(
'post_type' => 'car_listing',
'posts_per_page' => 10,
'tax_query' => array(
array(
'taxonomy' => 'post_tag',
'field' => 'slug',
'terms' => array( $car_group_term->slug ),
'operator' => 'IN'
)
)
) );
while ($car_group_query->have_posts() ) : $car_group_query->the_post();
get_template_part( 'content', 'car_listing' );
}
endwhile;
}
答案 0 :(得分:0)
如果你想在每个页面上显示两个标签的帖子,我认为最好的方法是只查询“get_terms”函数中的那两个标签。此外,我认为您必须创建自己的分页,因为分页是按查询进行的,因为您正在创建自定义分页,标准分页将不适用。
此外,如果您在页面模板中执行所有操作,则应使用“page”而不是“paged”查询var。如果它是一个存档页面(或任何单个页面),那么“paged”var就可以了。在下面的代码中,我考虑了两种选择。
<?php
if (get_query_var('paged')) { /* in case the code is on an archive/taxonomy page */
$paged = get_query_var('paged');
$nextpage = add_query_arg('paged', $paged + 1, get_permalink()); /* for paging later */
$prevpage = add_query_arg('paged', $paged - 1, get_permalink());
} elseif (get_query_var('page')) { /* in case the code is on a single page */
$paged = get_query_var('page');
$nextpage = add_query_arg('page', $paged + 1, get_permalink());
$prevpage = add_query_arg('page', $paged - 1, get_permalink());
} else {
$paged = 1;
if(!is_single() && !is_page()) { /* since there is no corresponding query var, need to check by type of page */
$nextpage = add_query_arg('paged', $paged + 1, get_permalink());
$prevpage = add_query_arg('paged', $paged - 1, get_permalink());
} else {
$nextpage = add_query_arg('page', $paged + 1, get_permalink());
$prevpage = add_query_arg('page', $paged - 1, get_permalink());
}
}
$number_per_page = 2; /* number of tags to show per page */
$car_count = get_terms(array(
'taxonomy' => 'post_tag',
'fields' => 'count', /* returns only number of terms for paging purpose */
));
$number_of_pages = $car_count / $number_per_page; /* get the total amount of pages */
$car_group_terms = get_terms(array(
'taxonomy' => 'post_tag',
'number' => $number_per_page,
'offset' => $number_per_page * ($paged - 1) /* offset to show the correct tags according to page number */
));
foreach ($car_group_terms as $car_group_term) {
/* Do What ever you want to do with each tag here */
}
/** paging **/
if ($paged < $number_of_pages) {
echo '<a href="' . $nextpage . '">Next Page</a> ';
}
if ($paged < $number_of_pages && $paged > 1) {
echo ' | ';
}
if ($paged > 1) {
echo '<a href="' . $prevpage . '">Previous Page</a> ';
}
/** /paging **/
?>
使用您自己的代码替换“/ *使用此处的每个标记做什么* /”。我没有将它复制到我的答案中,因为你在卷曲的括号中遇到了一些问题,这与答案无关。