使用动态查询对页面进行分页

时间:2013-06-13 作者:tyler

我有一个wordpress页面,上面有一系列列表和一个搜索框。搜索允许用户通过根据所选内容创建自定义WP\\U查询对象来筛选帖子。我想知道是否有一种方法可以将其分页,这样页面上就不会显示数百个结果。

基本上,我有一个if语句来检查表单是否已提交,然后将所选字段填充到一个数组中,并将其传递给meta\\u查询

$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
    if(isset($_POST[\'submit\'])){
    $the_query = new WP_Query(array(
          \'post_type\' => \'business\',
          \'post_status\' => \'publish\', 
          \'taxonomy\' => \'business-type\',
          \'business-type\' => \'attraction\',
          \'posts_per_page\' => 15,
          \'orderby\' => \'title\',
          \'order\' => \'ASC\',
          \'meta_query\' => $arrays,
          \'paged\' => $paged
        ));
    }else{
    $the_query = new WP_Query(array(
        \'post_type\' => \'business\',
        \'post_status\' => \'publish\', 
        \'taxonomy\' => \'business-type\',
        \'business-type\' => \'attraction\',
        \'posts_per_page\' => 15,
        \'orderby\' => \'title\',
        \'order\' => \'ASC\',
        \'paged\' => $paged
       ));
我使用while ( $the_query->have_posts() ) : $the_query->the_post();

结束后;我有我的页码

if($the_query->max_num_pages>1){?>
    <div class="pagination">
    <?php
      if ($paged > 1) { ?>
        <a href="<?php echo \'?paged=\' . ($paged -1); //prev link ?>"><</a>
      <?php }
      for($i=1;$i<=$the_query->max_num_pages;$i++){
        if($paged==$i){?>
          <span class="current"><?php echo $i; ?></span>
        <?php }else{?>
          <a href="<?php echo \'?paged=\' . $i; ?>" class="inactive"><?php echo $i;?></a>
        <?php
      }
    }
    if($paged < $the_query->max_num_pages){?>
        <a href="<?php echo \'?paged=\' . ($paged + 1); //next link ?>">></a>
    <?php } ?>
    </div>

2 个回复
SO网友:Gabriel

我本打算自己提出问题并回答它,但这似乎是个不错的地方。我解决这个问题的方法是使用$\\u会话。请记住,我使用的是无限滚动,因此我可以判断何时通过ajax获取页面,而不是在浏览器中实际导航到页面。

下面是步骤/伪代码:

清除会话变量运行“默认”循环并获取html用户筛选结果->从新循环获取结果设置会话变量,以便页面知道要运行哪些循环,用户向下滚动->从当前页面获取结果,但对于下一页,此页根据会话变量有条件地显示循环

SO网友:s_ha_dum

根据您发布的代码,您没有传递任何meta 参数到分页函数。您需要创建如下链接:

<a href="<?php get_permalink(). \'?paged=\' . ($paged + 1) . \'&meta_key=\'.$something.\'&meta_value=\'.$somethingelse; //next link ?>">Link Text</a>
我假设您正在某处处理初始查询的元信息,以便填充$arrays 但是,除非将该信息传递给后续查询,否则最终将在第2页和第2页上进行默认搜索,而不是仅限于所选项目的分页列表。

注意,我添加了get_permalink 到您的链接。您使用的是相对URL,并且those will cause a lot of heartache in WordPress.

你也可以调查paginate_links 而不是滚动自己的分页。它很方便。。。。不需要,但方便。

结束

相关推荐

How to use/enable Pagination?

我正在创建一个快捷码,以显示WordPress中具有特定配置文件的用户列表。但我无法启用或显示分页。我的网站上有25个用户,希望每页显示5个配置文件用户,并包括分页。我为学生档案添加了一个新角色student和多个使用高级自定义字段的自定义字段。因此,我需要显示一个学生列表作为适当的字段。到目前为止,问题是我无法启用的分页。下面是我的代码示例:add_shortcode(\'list-users\', \'list_users\'); function list_users($atts)