对变量WP_Query进行分页


Paginate a variable WP_Query

如果你能解决这个问题,你就是我一生的英雄!

我正在开发一个页面,该页面从自定义帖子类型中提取所有帖子并显示它们。页面顶部是一个筛选表单,用户可以在其中选择俱乐部和日期。然后,网站将过滤内容(使用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 -->     

上面有一个类似的循环,表示如果没有选择过滤器,那么只获取所有内容。因此CCD_ 3变量。

我想我已经涵盖了所有内容。如果您需要更多信息,请随时询问!

尝试将分页循环更改为:

    <!-- 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=