0

日付順に表示されているイベントのリストがあり、過去のイベントは非表示になっています。

問題は、全部で 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 番のままであり、どのページにいるのかわかりません。

どんな提案でも大歓迎です、どうもありがとう。

4

1 に答える 1

0

$paged値は0最初のページにあるため、最初のスニペットを編集します。

$paged = 0;

また、WP_Query を使用しているため、次の行を安全に削除できます。

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

于 2013-04-19T18:35:08.337 に答える