日付順に表示されているイベントのリストがあり、過去のイベントは非表示になっています。
問題は、全部で 3 ページのイベントがあるのに、過去のイベントを非表示にすると、2 ページを埋めるのに十分なイベントしかないことです。ただし、3 番目の空白のページはまだ存在し、ページング リンクからアクセスできます。
これは、私のイベント リスト ページのコードです。
<?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 つ目の問題も発見しました。結果の 2 ページ目または 3 ページ目に移動すると、現在の CSS クラスがページング内の 1 番のままであり、どのページにいるのかわかりません。
どんな提案でも大歓迎です、どうもありがとう。