2022年04月25日

WP関数:WP_Query()

この関数の説明

WP関数の WP_Query() は、WordPressのDBから、条件を指定して該当文書を取り出す関数です。

 


関数

WP_Query( $args )

 


パラメータ

$args(配列)必須

DBを検索し表示する条件を指定します。

詳細はパラメータ仕様を参照してください。

 


戻り値

抽出したデータをオブジェクトとして返します。

 


パラメータ仕様

下記は Queryの主要なパラメータを解説しています。

区分 キー名 タイプ 説明
抽出方法
'post_type' 文字列 抽出する文書タイプを指定します。

説明
'post' 投稿を抽出します
'page' 固定ページを抽出します
'any' 投稿と固定ページを抽出します default
'××x'' カスタム投稿のxxxを抽出します
'category_name'
文字列 指定したカテゴリのスラッグ名の投稿を抽出します。
'cat' 整数 指定したカテゴリIDの投稿を抽出します。
'tag' 文字列 指定したタグのスラッグ名の投稿を抽出します。
'tag_id'
整数 指定したタグIDの投稿を抽出します。
's' 文字列 指定した検索ワードでヒットする投稿を抽出する
'post_in' 配列 リストしたい文書IDを配列で指定します。
'post__not_in' 配列 リストから省きたい文書IDを配列で指定します。

現在の投稿をリストから省きたい場合は下記を指定します。

'post__not_in' => array(get_the_ID()),

並び順 'orderby' 文字列 対象リストの並び順を指定します。

説明
'date' 作成日順 default
'modified' 更新日順
'id' 投稿ID順
'title' タイトル名順
'rand' ランダム表示
'meta_value_num'
'meta_key'の値でソートします。
'post_in' 'post__in' パラメータの投稿IDの順
'meta_key' 文字列 カスタムフィールドの名前を指定します。
'order' 文字列 昇順/降順を指定します。

説明
'desc' 降順 (大きい、新しい) default
'asc' 昇順(小さい、古い順)
ページ
制御
'posts_per_page' 整数 1ページに表示する個数を指定します。

総てを取り出す場合は-1を指定します。

指定しない場合は[設定→表示設定]で指定している値になります。

'paged' 整数 表示を開始するページ番号を指定します。

デフォルトは1です。

 


事例

①投稿文書を読込みタイトルを表示する
下記は投稿文書を「作成日」が「新しいもの順」で5個取り出し、文書のタイトルを表示するプログラムです。
<?php
	$args = array(
		'post_type' => 'post',
		'posts_per_page' => 5,
	);
	$my_query = new WP_Query( $args );     // サブクエリーの実行
?>
 
<?php while ($my_query->have_posts()):$my_query->the_post(); ?> <!-- ループで文書を取り出す -->
   <p><?php the_title();?></p>
<?php endwhile;?>
<?php wp_reset_postdata();?>    <!-- Queryをリセットします -->

'orderby'は、デフォルトの'date'で、'order'は、デフォルトの'desc'です。

■タイトルの表示は the_title() を参照してください。

■12行目:WP_Query()を利用した時は必ずリセットを行ってください。

更に上記の $my_query の中には下記の様なデータが入っています。
<?php
	echo $my_query -> found_posts.'<br>';	 // 発見した文書数①
	echo $my_query -> post_count.'<br>';   // 1ページに表示する個数 5が表示されます②
	echo $my_query -> max_num_pages.'<br>';// ①/②(整数、切り上げ)  
?>

■2行目:発見した文書数①

■3行目:1ページに表示する個数②

■4行目:ページ数 ①/②(整数、切り上げ)

 

関数一覧
  • 1.WPのエスケープ処理
  • 2.WPプログラムの基本
  • 3.ヘッダ/フッタ/サイドバで使われる関数
  • 4.DBからの読込関数
  • 5.一般テンプレートの中で使われる関数
  • 6.その他のWP関数
  • add_shortcode()
  • bloginfo()
  • body_class()
  • date_i18n()
  • dynamic_sidebar()
  • edit_post_link()
  • esc_attr()
  • esc_html_e()
  • esc_html()
  • esc_url()
  • get_ancestors()
  • get_cat_ID()
  • get_cat_name()
  • get_category_link()
  • get_category_parents()
  • get_category()
  • get_footer()
  • get_header()
  • get_home_url()
  • get_post_format()
  • get_post_meta()
  • get_post_thumbnail_id()
  • get_query_var()
  • get_search_query()
  • get_sidebar()
  • get_site_url()
  • get_stylesheet_directory_uri()
  • get_stylesheet_uri()
  • get_template_directory_uri()
  • get_template_part()
  • get_the_category()
  • get_the_content()
  • get_the_date()
  • get_the_excerpt()
  • get_the_ID()
  • get_the_modified_date()
  • get_the_modified_time()
  • get_the_permalink()
  • get_the_post_thumbnail()
  • get_the_tags()
  • get_the_time()
  • get_the_title()
  • get_uploaded_header_images()
  • get_year_link()
  • has_category()
  • has_custom_logo()
  • has_header_image()
  • has_header_video()
  • has_nav_menu()
  • has_post_thumbnail()
  • has_tag()
  • header_image()
  • home_url()
  • is_admin()
  • is_category()
  • is_date()
  • is_front_page()
  • is_home()
  • is_main_query()
  • is_page()
  • is_search()
  • is_single()
  • language_attributes()
  • the_category()
  • the_content()
  • the_custom_header_markup()
  • the_custom_logo()
  • the_date()
  • the_excerpt()
  • the_ID()
  • the_modified_date()
  • the_modified_time()
  • the_permalink()
  • the_post_thumbnail()
  • the_search_query()
  • the_tags()
  • the_time()
  • the_title()
  • update_post_meta()
  • wp_get_attachment_image_src()
  • wp_nav_menu()
  • WP_Query()