过滤过去事件后,WordPress分页显示额外的空白页

时间:2013-04-19 15:10:00

标签: wordpress pagination paging custom-post-type

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

问题在于总共有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 );

}

我还发现了第二个问题,当转移到第2页或第3页的结果时,当前的CSS类仍然在分页中的数字1上,因此无法分辨您所在的页面。

非常感谢任何建议,非常感谢。

1 个答案:

答案 0 :(得分:0)

第一页上的

$paged值为0,因此请修改您的第一个代码段:

$paged = 0;

另外,当您使用WP_Query时,您可以安全地删除以下行,这可能是错误而不是好:

query_posts( '&post_type=upcomingevents&paged=' . $paged );