筛选的事件列表是否正在中断分页?

时间:2013-04-17 作者:rachel

我有一个按日期顺序显示的事件列表,其中隐藏了过去的事件。

问题是,总共有3页的事件,但一旦过去的事件被隐藏,就只有足够的事件来填满2页。但是,第三个空白页仍然存在,可以通过分页链接访问。

这是“我的事件列表”页面上的代码:

<?php $today = date("Ymd");?>

<?php $paged = 1;
if ( get_query_var(\'paged\') ) $paged = get_query_var(\'paged\');
if ( get_query_var(\'page\') ) $paged = get_query_var(\'page\');
query_posts( \'&post_type=upcomingevents&paged=\' . $paged );?> 

<?php $loop = new WP_Query( array( \'post_type\' => \'upcomingevents\', \'paged\'=> $paged, \'meta_key\' => \'start_date\', \'meta_compare\' => \'>=\', \'meta_value\' => $today, \'orderby\' => \'meta_value_num\', \'order\' => \'ASC\' )); ?>
<?php while ( $loop->have_posts(\'post_type=upcomingevents\') ) : $loop->the_post(); ?>
这是我的函数文件中的分页代码:

function paginate() {
global $wp_query, $wp_rewrite;
$wp_query->query_vars[\'paged\'] > 1 ? $current = $wp_query->query_vars[\'paged\'] : $current = 1;
$pagination = array(
    \'base\' => @add_query_arg(\'page\',\'%#%\'),
    \'format\' => \'\',
    \'total\' => $wp_query->max_num_pages,
    \'current\' => $current,
    \'show_all\' => true,
    \'type\' => \'plain\'
);
if ( $wp_rewrite->using_permalinks() ) $pagination[\'base\'] = user_trailingslashit( trailingslashit( remove_query_arg( \'s\', get_pagenum_link( 1 ) ) ) . \'page/%#%/\', \'paged\' );
if ( !empty($wp_query->query_vars[\'s\']) ) $pagination[\'add_args\'] = array( \'s\' => get_query_var( \'s\' ) );
echo paginate_links( $pagination );
}

1 个回复
SO网友:s_ha_dum

你有两个问题在我看来是相互竞争的。

您正在使用query_posts 更改主查询,但不在其中包含任何筛选器您正在使用筛选器创建新查询--\'meta_key\' => \'start_date\', 等等--并循环查询结果集以显示您的帖子$wp_query-- 没有任何过滤功能。事情不同步并不奇怪您需要重新考虑这一点,以便只使用一个查询,而不是将两个查询混在一起。我相信你可以使用$loop 对象,就像您正在使用$wp_query 在分页函数中。

function paginate($loop) {
  global $wp_rewrite;
  $loop->query_vars[\'paged\'] > 1 ? $current = $loop->query_vars[\'paged\'] :   $current = 1;
  $pagination = array(
    \'base\' => @add_query_arg(\'page\',\'%#%\'),
    \'format\' => \'\',
    \'total\' => $loop->max_num_pages,
    \'current\' => $current,
    \'show_all\' => true,
    \'type\' => \'plain\'
  );
  // ...
我不能保证这是一个完整的解决方案。如果不复制数据库和页面结构,您所获得的内容将非常复杂,很难进行测试。

您也可以使用pre_get_posts 筛选以更改主查询并为数据库节省一些麻烦。

结束

相关推荐

Pagination gives 404 error

似乎WP团队从未解决过WP的这个bug。我有自定义的帖子类型,我的url结构是/%类别%/%postname%/如果我点击第二页,我会得到404错误。我尝试了在互联网上找到的所有东西,插件和代码。。我甚至将我的分页基url更改为非页面,所以wp不认为我在搜索名为page的帖子类型。但还是没什么。是的,我做了permalinks的重新保存过程,我试着恢复到deafault,然后返回,仍然没有什么。。。下载的wp\\U navi仍然相同。。我能做些什么来解决这个问题吗?