0

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

问题是总共有 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 上,因此无法判断您在哪个页面上。

任何建议将不胜感激,非常感谢。

4

1 回答 1

0

$paged0在第一页,所以编辑你的第一个片段:

$paged = 0;

此外,当您使用 WP_Query 时,您可以安全地删除以下行,这可能弊大于利:

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

于 2013-04-19T18:35:08.337 回答