説明
array query_posts( mixed $query )
投稿情報を条件を指定して検索し、マッチしたすべてのデータをグローバル変数$postsに、その先頭データを$postにロードする。
パラメータ
- $query検索条件を指定する文字列または連想配列。文字列の場合はname=valueの形式で指定し、複数の条件はname1=value1&name2=value2のように'&'の後に続ける。主なキーワードは次の通り(一部は連想配列のみで有効)。
キーワード 意味 p 投稿ID post__in 取得する投稿IDを配列で指定(検索条件は必ず連想配列を使う) post__not_in 除外する投稿IDを配列で指定(検索条件は必ず連想配列を使う) ignore_sticky_posts 先頭固定表示(sticky)の投稿情報を含めない場合はtrueを指定(省略時はfalse) s 検索キーワード(投稿タイトル、抜粋および本文を検索([4.5.0]抜粋が追加)) sentence 検索キーワードを区切り文字で分割しない場合はtrueを指定(省略時はfalse) search_columns [6.2.0]検索対象のカラム('post_title'、'post_excerpt'、'post_content'の組み合わせ)を配列で指定(省略時はarray()) title [4.4.0]投稿タイトルを指定して検索 exact 検索キーワードを完全一致にする場合はtrueを、部分一致の場合はfalseを指定(省略時はfalse) cat 何れかのカテゴリーに属する投稿情報はカテゴリーIDを、何れのカテゴリーにも属さない投稿情報は-を付けたカテゴリーIDを指定(複数指定する場合は,で区切る) category__in 何れかのカテゴリーに属する投稿情報をカテゴリーID(複数指定する場合は ,で区切る文字列ではなく連想配列を使う)で検索category__not_in 何れのカテゴリーにも属さない投稿情報をカテゴリーID(複数指定する場合は ,で区切る連想配列を使う)で検索category_name 投稿情報の属するカテゴリーのスラッグ(複数指定する場合は,で区切る) comment_count コメント数そのものか条件を連想配列で指定。連想配列は次のような内容となり、キーcompareの値には'='、'!='、'>'、'>='、'<'、'<='が指定できる array( 'value' => 1, 'compare' => '>=', )
comment_status コメントステータス('open'や'closed')を指定 tag 何れかのタグが設定された投稿情報はタグスラッグ(複数指定する場合は,で区切る)で、すべてのタグが設定された投稿情報はタグスラッグを+で区切って指定 tag_slug__and すべてのタグが設定された投稿情報をタグスラッグ(複数指定する場合は,で区切る)で検索 tag_slug__in 何れかのタグが設定された投稿情報をタグスラッグ(複数指定する場合は,で区切る)で検索 tag__and すべてのタグが設定された投稿情報をタグID(複数指定する場合は,で区切る)で検索 tag__in 何れかのタグが設定された投稿情報をタグID(複数指定する場合は,で区切る)で検索 tag__not_in 何れかのタグも設定されていない投稿情報をタグID(複数指定する場合は,で区切る)で検索 meta_key カスタムフィールドの名前 meta_value カスタムフィールドの値 meta_compare_key [5.1.0]カスタムフィールド名の比較条件 meta_type_key [5.3.0]カスタムフィールド名の比較時に英大文字・小文字を区別する場合に'BINARY'を指定。使い方は「5.3の機能強化:カスタムフィールドキーの条件指定が使いやすくなる」を参照。 author 投稿者ID author_name 投稿者名 post_status 投稿ステータス('publish'、'inherit'、'auto-draft'、'private'など。複数指定する場合は,で区切る) order ソート順を示すASCかDESC(省略時はDESC) orderby ソート対象を示すauthor、date、 category、title、modified、ID、rand、'comment_count'など(省略時は投稿日時)。
※クエリーパラメータに'meta_key'が指定されている場合は、'meta_value'および'meta_value_num'が使用できる。
※[4.2.0]クエリーパラメータに'meta_query'が指定されている場合、その連想配列のキー名を使用できる。posts_per_page 最大取得件数(省略時は管理画面「表示設定」の「1ページの投稿数」) offset 取得開始位置(先頭は0。省略時は取得件数とページ番号から算出) post_type 投稿タイプを示す'post'、'page'、カスタム投稿タイプ名またはそれらの配列('any'を指定することで登録されているすべて投稿タイプ) attachment 添付情報名(post_name) attachment_id 添付情報のID subpost attachmentのエイリアス subpost_id attachment_idのエイリアス name 投稿名 m 投稿日時(書式はYYYY~YYYYMMDDhhmmss。数字以外は取り除かれる) hour 投稿日時の時 minute 投稿日時の分 second 投稿日時の秒 year 投稿日時の年 monthnum 投稿日時の月 day 投稿日時の日 date_query 日付に関連する検索条件を配列で指定。使い方は「投稿日の検索が自由自在に」を参照。 fields 取得したい項目名('ids'の場合は投稿IDのみ、'id=>parent'の場合は投稿IDおよび親ID(投稿IDがキーで中身が親IDの配列)、そのほかの場合は全部) nopaging 1を指定した場合、posts_per_pageの指定値を無視して条件にマッチする全件数を取得 tax_query タクソノミーに関連する条件を配列で指定。配列の形式は次の通り。 ・'relation'には、'OR'または'AND'のいずれかを指定(省略時は'AND')。array( 'relation' => 'AND', array( 'taxonomy' => '', 'terms' => array(), 'include_children' => true, 'field' => 'term_id', 'operator' => 'IN' ), )
・詳細条件を指定する配列は複数指定でき、'relation'の指定にしたがって条件を組み合わせる。
・詳細条件の'taxonomy'には、'category'、'post_tag'、'post_format'などのタクソノミー名を指定。
・詳細条件の'terms'には、タクソノミーの値を配列で指定。
・詳細条件の'field'には、'term_id'、'slug'などのフィールド名を指定。
・詳細条件の'operator'には、'AND'、'IN'、'NOT IN'の何れかを指定。
meta_query カスタムフィールドに関連する条件を配列で指定。配列の形式は次の通り。 ・'relation'には、'OR'または'AND'のいずれかを指定(省略時は'AND')。array( 'relation' => 'AND', array( 'key' => 文字列, 'value' => 文字列または配列, 'compare' => '=', 'type' => 'CHAR' ), )
・詳細条件を指定する配列は複数指定でき、'relation'の指定にしたがって条件を組み合わせる。
・詳細条件の'key'には、カスタムフィールドの名前を指定。
・詳細条件の'value'には、カスタムフィールドの値を文字列または配列(複数の値を指定する場合)で指定。
・詳細条件の'compare'には、条件として'='、'!='、'>'、'>='、'<'、'<='、'LIKE'、'NOT LIKE'、'IN'、'NOT IN'、'BETWEEN'、'NOT BETWEEN'の何れかを指定(省略時は'=')。
・詳細条件の'type'には、値('value')のデータ型として'NUMERIC'、'BINARY'、'CHAR'、'DATE'、'DATETIME'、'DECIMAL'、'SIGNED'、'TIME'、'UNSIGNED'の何れかを指定(省略時は'CHAR')。
※[4.2.0]複数のカスタムフィールドの条件を指定し、かつそれらの項目でソートしたい場合は、そのカスタムフィールド条件の配列のキー名に任意の文字列(下記の'meta1'や'meta2')を指定することでそれを'orderby'パラメータに指定できる。
array( 'relation' => 'AND', 'meta1'=>array( 'key' => 文字列, 'value' => 値1, 'compare' => '>', 'type' => 'DECIMAL' ), 'meta2'=>array( 'key' => 文字列, 'value' => 値2, 'compare' => ' 'DATE' ), )
返り値
マッチしたすべてのデータが格納された配列を返す。データの中身は、基本的に投稿情報すべてになるが、パラメータとして'fields'の値が'ids'が指定された場合は投稿IDの配列、'id=>parent'を指定指定された場合はキーが投稿IDで中身が親投稿IDとなる。注意
パラメータnameは投稿名であり、投稿タイトルではない。
パラメータmは実際の検索前に数字以外の文字は除外され、年月日時分秒の順に分割される(年のみ4桁、ほかは2桁)。具体的には、「m=2011年04月01日」と指定された場合は、「year=2011&monthnum=04&day=01」と同じ意味となる。
参考:
投稿日の検索が自由自在に
query_posts(WP_Queryクラス)でカテゴリーを絞り込む
query_posts(WP_Queryクラス)で投稿タグを絞り込む
query_posts(WP_Queryクラス)で'tax_query'を使いこなす
query_posts(WP_Queryクラス)でカスタムフィールドを使う
もうquery_postsは呼ばない
使用例
- カテゴリー名が'日記'の投稿情報をロードする。<?php query_posts( 'category_name=日記' ); ?>
ソースファイル
/wp-includes/query.php最終更新 : 2023年12月21日 10:42
関連
お勧め
プラグインのロード順を制御する(2014年6月9日 更新)
これまでプラグインがどのような順番でロードされるか意識していなかったのだが、とある自作プラグインを他のプラグインよりも先にロードさせたくなったので調べてみた。
5.3の機能強化:カスタムフィールドキーの条件指定が使いやすくなる(2019年11月19日 更新)
5.3 RC4もリリースされ、正式リリースまであと1週間。5.3の変更点を確認していると、WP_Meta_Queryクラスが変更されていた。これは「Expanded meta key comparison operators in 5.3」で紹介されており、さまざまな条件指定が追加されていた。
HTML entities button:プラグイン作ってみました(2021年4月28日 更新)
以前投稿した「HTML編集モードに定型文ボタンを追加する」をアレンジして、HTML編集モードに特殊文字(HTMLエンティティ)を挿入できるボタン、顔文字を挿入できるボタン、過去の投稿ページのリンクを挿入できるボタンを追加するプラグインを作ってみました。HTML編集モードの作業効率を向上させるプラグインです。2.1.0では「Dashiconsの挿入」を追加しました。HTML編集モードをメインに使用されている方は、お試しあれ。更新ボタンの横にスピナーを実装する(2019年5月14日 更新)
WordPressの管理画面ではAJAXを使って何らかの処理を行う際、数秒間の空き時間にアイコンがクルクル回る「スピナー」を表示しているところがある。今作っているプラグインでこの「スピナー」を使いたくなったので、実装方法を調べてみた。
「順序」をtextからnumberに変更してみた(2018年5月27日 更新)
固定ページの編集画面の「投稿の属性」ウィジェットには、ページの並び替えに使用できる「順序」のinput要素がある。この「順序」のinput要素はtype属性が'text'となっており、編集の際にIMEが有効になってしまう場合がある。ページの編集頻度が多くなると、その都度IMEをオフにするのがやや面倒になってくる。