WordPressで現在の投稿クエリに準拠したから全ての投稿IDを取得する方法

作成日:

WordPressでアーカイブページ表示時には、そのクエリを基準として、posts_per_pageで指定した数だけが表示されます。今回、同クエリ条件から全ての投稿IDを一旦取得しておきたいという事案がありましたのでその方法を備忘録として残しておきます。

コード

PHP
function get_all_posts_ids() {
	global $wp_query;
	$args                   = $wp_query->query_vars;
	$args['posts_per_page'] = -1;
	$args['fields']         = 'ids';
	$args['nopaging']       = true;
	$the_query              = new WP_Query( $args );
	$post_ids               = $the_query->posts;
	wp_reset_postdata();
}
add_action( 'wp_head', 'get_all_posts_ids', 10 );

まず、

PHP [3]
	$args                   = $wp_query->query_vars;
でグローバル変数$wp_queryからクエリ変数を取得します。

全件数をIDで取得したいので

PHP [4-5]
	$args['posts_per_page'] = -1;
	$args['fields']         = 'ids';
と値を上書きします。

さらに

PHP [6]
	$args['nopaging']       = true;
でnopagingをtrueにしておきます。こうしておかないとSQLエラーが発生しました。

nopaging (真偽値) - すべての投稿を含めるか、ページ送りに対応させます。デフォルト値は false で、ページ送りに対応します。

関数リファレンス/WP Query - WordPress Codex 日本語版

これで条件通りの投稿IDを全て取得することが出来ました。

物草 灸太郎
物草 灸太郎

WordPressでホームページを制作しつつ、休日は畑を耕したりDIYを楽しんでいます。

Loading...

コメントをどうぞ

  • メールアドレスが公開されることはありません。
  • コメント欄にURLは入力できません。
  • このサイトはreCAPTCHAによって保護されており、Googleのプライバシーポリシー利用規約が適用されます。