如果你能想出这一个,你就是我终生的英雄!
我正在处理一个页面,该页面从自定义帖子类型中提取所有帖子并显示它们。页面顶部是一个过滤器表单,用户可以在其中选择分会和日期。然后,该站点将过滤内容(使用WP_Query)以显示用户选择的内容。这很棒!
但是,如果您尝试对此内容进行分页,那么事情就不太对了!向你展示可能更容易......
会显示特定分会和日期的结果(每页限制为2个帖子),如果点击底部的页面,您会看到图片实际上没有变化,?paged=2
?paged=3
等只是附加到URL,没有分页逻辑生效。
页面的代码如下(我知道很久)
<?php
$club = $_GET['club'];
$formdate = $_GET['inputdate'];
$date = explode('-', $formdate);
$paged2 = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'post_type' => 'sell_media_item',
'collection' => $_GET['club'],
'include_children' => false,
'year' => $date[0],
'monthnum' => $date[1],
'day' => $date[2],
'paged' => $paged2,
'posts_per_page' => 2
); ?>
<?php $loop2 = new WP_Query( $args ); ?>
<?php if ( $loop2->have_posts() ) : while ($loop2->have_posts()) : $loop2->the_post(); ?>
<div class="third gallery-third">
<a href="<?php the_permalink(); ?>"><?php sell_media_item_icon( get_post_meta( $post->ID, '_sell_media_attachment_id', true ) ); ?></a>
</div>
<?php endwhile; ?>
<div class="clearfix"></div>
<?php else: ?>
<p>No images found.</p>
<?php endif; ?>
<?php wp_reset_postdata(); ?>
</div>
<div class="clearfix"></div>
<!-- pagination php -->
<?php
if($loop2->max_num_pages>1){?>
<?php
if ($paged2 > 1) { ?>
<a href="<?php echo '?club=' .$club. '&inputdate='. $formdate . '?paged=' . ($paged2 -1); //prev link ?>" class="page-numbers"><</a>
<?php }
for($a=1;$a<=$loop2->max_num_pages;$a++){?>
<a href="<?php echo '?club=' .$club. '&inputdate='. $formdate . '?paged=' . $a; ?>" <?php echo ($paged2==$a)? 'class="page-numbers selected"':'';?> class="page-numbers"><?php echo $a;?></a>
<?php
}
if($paged2 < $loop2->max_num_pages){?>
<a href="<?php echo '?club=' .$club. '&inputdate='. $formdate . '?paged=' . ($paged2 + 1); //next link ?>" class="page-numbers">></a>
<?php } ?>
<?php } ?>
<!-- end pagination php -->
在此之上有一个类似的循环,表明如果没有选择过滤器,那么只需获取所有内容。因此$loop2
变量。
我想我已经涵盖了一切。如果您需要更多信息,请随时提出要求!
答案 0 :(得分:1)
尝试将分页循环更改为:
<!-- pagination php -->
<?php
if($loop2->max_num_pages>1){?>
<?php
if ($paged2 > 1) { ?>
<a href="<?php echo '?club=' .$club. '&inputdate='. $formdate . '&paged=' . ($paged2 -1); //prev link ?>" class="page-numbers"><</a>
<?php }
for($a=1;$a<=$loop2->max_num_pages;$a++){?>
<a href="<?php echo '?club=' .$club. '&inputdate='. $formdate . '&paged=' . $a; ?>" <?php echo ($paged2==$a)? 'class="page-numbers selected"':'';?> class="page-numbers"><?php echo $a;?></a>
<?php
}
if($paged2 < $loop2->max_num_pages){?>
<a href="<?php echo '?club=' .$club. '&inputdate='. $formdate . '&paged=' . ($paged2 + 1); //next link ?>" class="page-numbers">></a>
<?php } ?>
<?php } ?>
<!-- end pagination php -->
我所做的唯一更改是将?paged=
更改为&paged=