1

カスタム クエリを使用して、カスタム投稿タイプの過去 30 日間に公開された投稿のみを取得しています。

wp-paginate をインストールして、ページネーションに使用しています。ページ自体は正常に動作していますが、wp-paginate は、返されたかどうかに関係なく、すべての投稿に対して十分なページを表示しているようですが、カスタム クエリです。

たとえば、公開された投稿は 35 件ありますが、過去 30 日間で 12 件しかありません。WP-Paginate では、過去 30 日間の 12 件の投稿すべてに対して 2 ページしか表示されないはずですが、3 ページと 4 ページが空白で 4 ページが表示されています。

クエリの私のコードは次のとおりです。

<?php 

$current_page = (get_query_var('paged')) ? get_query_var('paged') : 1;

function filter_where($where = '') {
    $where .= " AND post_date > '" . date('Y-m-d', strtotime('-30 days')) . "'";
    return $where;
}

$jobPosts = null;
add_filter('posts_where', 'filter_where');
$jobPosts = new WP_Query('post_type=job_boards&paged=' . $current_page);
remove_filter('posts_where', 'filter_where');

while ($jobPosts -> have_posts()) : $jobPosts -> the_post();

    // Display stuff

endwhile; wp_reset_postdata();

if (function_exists('wp_paginate')) wp_paginate();

?>
4

2 に答える 2

3

解決したようですが、必要以上に複雑です。ページ数と表示する現在のページを wp_paginate 関数に渡します。

wp_paginate(array('pages' => $num_pages, 'page' => $current_page));
于 2013-02-07T20:07:10.343 に答える
1

カスタムクエリを使用している間は、以下を試してください

wp pagenavi プラグインの場合

if (function_exists('wp_pagenavi')):

 wp_pagenavi( array( 'query' => $jobPosts ) );

endif;

wp paginate プラグインの場合

if (function_exists('wp_paginate')):
   wp_paginate(false,$jobPosts);
endif;
于 2013-02-07T15:07:49.917 に答える