web-dev-qa-db-ja.com

総投稿数が見つかりましたが、ページ区切りにlimitを使用していますか?

カスタム分類検索に基づいてIDを取得する必要がある投稿が多数あります。ページネーションに使用されているので、投稿数も制限なく取得する必要がありますが、その方法はわかりません。それらを見つけるために私は以下のget_postsを使います:

$args = array('posts_per_page'   => $limit,
              'offset'           => $offset,
              'category'         => '1',
              'orderby'          => 'post_date',
              'order'            => 'DESC',
              'post_type'        => 'attachment',
              'post_status'      => 'inherit',
              'suppress_filters' => true,
              'tax_query' => $search_terms, // Fairly complex search array
            );
$attachments = get_posts($args);

しかし、これらの結果に基づいてページングシステムを構築したい場合、問題が発生します。制限なしで総投稿数を取得する必要があります。同じ検索をもう一度実行して$ limitを除外することもできますが、膨大な数の投稿(300k +)のため、特に全投稿数ではなく全投稿数のみが必要な場合は非常に遅くなります。 get_postsでも、単に添付ファイルIDを取得するのと同じくらい単純なものには少し重すぎるようです。

それを処理するために昔ながらのMySQLクエリを構築しようとしましたが、分類法の処理は上記の方法で非常にきれいに行われ、正しく機能するようには思えませんでした。

何かアドバイスは大歓迎です!ありがとうございました!

1
true

あなたはget_postsの代わりにWP_Queryを使うことができ、それからあなたはあなたのために設定されているプロパティを使うことができます:

  • $ post_count - 表示されている投稿の数。
  • $ found_posts - 現在のクエリパラメータと一致する投稿の総数
  • $ max_num_pages - 総ページ数。 $ found_posts/$ posts_per_pageの結果です
3
Bainternet