2024年06月13日
WP関数:WP_Query()
この関数の説明
WP関数の WP_Query() は、WordPressのDBから、条件を指定して該当文書を取り出す関数です。
関数
WP_Query( $args )
パラメータ
$args(配列)必須
DBを検索し表示する条件を指定します。
詳細はパラメータ仕様を参照してください。
戻り値
抽出したデータをオブジェクトとして返します。
パラメータ仕様
下記は Queryの主要なパラメータを解説しています。
区分 | キー名 | タイプ | 説明 | ||||||||||||||||
抽出方法 |
'post_type' | 文字列 | 抽出する文書タイプを指定します。
|
||||||||||||||||
'category_name' |
文字列 | 指定したカテゴリのスラッグ名の投稿を抽出します。 | |||||||||||||||||
'cat' | 整数 | 指定したカテゴリIDの投稿を抽出します。 | |||||||||||||||||
'tag' | 文字列 | 指定したタグのスラッグ名の投稿を抽出します。 | |||||||||||||||||
'tag_id' |
整数 | 指定したタグIDの投稿を抽出します。 | |||||||||||||||||
's' | 文字列 | 指定した検索ワードでヒットする投稿を抽出する | |||||||||||||||||
'post_in' | 配列 | リストしたい文書IDを配列で指定します。 | |||||||||||||||||
'post__not_in' | 配列 | リストから省きたい文書IDを配列で指定します。
現在の投稿をリストから省きたい場合は下記を指定します。 'post__not_in' => array(get_the_ID()), |
|||||||||||||||||
並び順 | 'orderby' | 文字列 | 対象リストの並び順を指定します。
|
||||||||||||||||
'meta_key' | 文字列 | カスタムフィールドの名前を指定します。 | |||||||||||||||||
'order' | 文字列 | 昇順/降順を指定します。
|
|||||||||||||||||
ページ 制御 |
'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行目:ページ数 ①/②(整数、切り上げ)