WP_Queryを使用して必要な投稿を取得する方法は次のとおりです

過去に単純なテーマを作成したことがある場合、自分で投稿を取得する必要が生じなかった可能性があります。結局のところ、WordPressはメインページの最新の10件の投稿とアーカイブページの正しい投稿を読み込みます。より複雑なシナリオはどうですか?ある種のサイトマップが必要で、すべての投稿を一覧表示したい場合 そして 日付順のページ?


WP_Queryはあなたの友達です。あなたの基準に従ってデータベースから投稿をプルすることができます。特定のタグを含む単一のカテゴリからすべての投稿を取得することもできます。昨年作成されたすべてのページと、注目の画像がない投稿を取得できます.

この投稿では、WP_Queryがどのように機能するかを詳しく説明します–始めましょう!

カスタムループ

カスタムクエリを適切に処理するための鍵は、それらに渡すことができる引数を習得することです。これを見る前に、簡単に作成しましょう "スケルトン" 投稿の一覧表示に使用できます。通常のアーカイブページのループは次のようになります。

<?php if(have_posts()): ?>
<?php while(have_posts()):the_post() ?>

<?PHP endwhile ?>
<?php else: ?>

<?PHP endif ?>

ページが読み込まれる前に、WordPressはすでに正しい投稿を取得しているため、これは問題なく機能します。カスタムクエリを作成するときは、カスタムループが必要です。コードは非常によく似ています。

<?php
$ args = array(
‘post_type’ => ‘役職’,
‘post_status’ => ‘未来’
);
$ scheduled = new WP_Query($ args);

if($ scheduled->have_posts()):
?>
<?php while($ scheduled->have_posts()):$ scheduled->ポスト() ?>

<?PHP endwhile ?>
<?php else: ?>

<?PHP endif ?>

WP_Queryクラスを使用して新しいWordPressクエリを作成し、それにパラメーターを渡して、必要な投稿のタイプを指定します。次に、$ scheduledオブジェクトのhave_posts()およびthe_post()メソッドを呼び出します.

オブジェクト指向プログラミングに不慣れで、その理由がよくわからなくても心配はいりません。カスタムクエリを簡単に使用できます。投稿全体を通して$ args配列に焦点を当てますが、これはかなり簡単です.

単純な引数

私が述べたように、メイン "知識のボディ" WP_Queryに関しては、その引数にあります。の コーデックス それらのすべてをリストします。ここでは最も有用なものを見ていきます.

tagやtag_idパラメータなど、一部の引数は非常に単純です。前者はタグスラグを受け取り、後者はタグIDを受け取ります。複数のアイテムをコンマで区切るか、負のIDを使用して、投稿を取得することを示すこともできます ない 特定のタグが付けられている.

$ args = array(
‘post_type’ => ‘役職’,
‘tag_id’ => 「22、92、44、-21」
);
$ our_posts = new WP_Query($ args);

スニペットは、最初の3つのタグのいずれかが付加されている記事を取得しますが、4番目のタグは取得しません。このシステムは単純なニーズには十分強力ですが、通常、後で説明するはるかに柔軟な分類法クエリを使用します。.

author、author_name、cat、category_name、s(検索用語の場合)、post_status、post_typeは、さらに単純なフィールドの例です。 post_statusなどの一部のフィールドでは、複数の値を使用する場合、ステータスの配列を渡す必要があります。.

$ args = array(
‘post_type’ => array( ‘post’、 ‘page’),
‘post_status’ => array( ‘draft’、 ‘publish’),
「猫」=> ‘ミュージックビデオ’
);
$ our_posts = new WP_Query($ args);

上記の例では、ページ、投稿のいずれかの投稿を取得します。公開済みまたはドラフトステータスであり、音楽またはビデオのカテゴリが割り当てられている。これは、音楽またはビデオに関連する現在または計画中のコンテンツのタイトルを表示するために使用できます.

分類クエリ

単純なものの場合、前述の引数を使用してカテゴリまたはタグに基づいて投稿を取得するだけで十分ですが、カスタム分類法がある場合、または複数のパラメータを組み合わせる必要がある場合はどうでしょうか。答えは、それ自体が配列であるtax_query引数にあります。最初に例を見てみましょう.

$ args = array(
‘post_type’ => ‘本’,
‘tax_query’ => アレイ(
アレイ(
‘分類’ => ‘ジャンル’,
‘フィールド’ => 「スラッグ」,
‘用語’ => array( ‘scifi’、 ‘thriller’),
‘演算子’ => ‘ありませんで’,
),
アレイ(
‘分類’ => ‘著者’,
‘フィールド’ => 「id」,
‘用語’ => 配列(92、883、399),
),
‘関係’ => ‘そして’,
),
);
$ query = new WP_Query($ args);

ここでは、「book」投稿タイプからいくつかの投稿を取得し、分類パラメータを追加しています。 tax_query内で定義された2つの配列を使用して、著者の92、883、または399によって書かれた本をプルすることを指定しました。 ない SFやスリラーのジャンルで。 relationパラメータは、2つの配列間の関係を定義します。私たちの場合、それは「and」関係であり、両方の条件を満たす必要があることを意味します.

「または」を使用した場合、SFやスリラーのカテゴリに含まれない、または指定された3人の著者が書いた本を取得したことになります。平易な英語でこれは意味します:SFとスリラーのジャンルを除いて私の本をすべて見たいです。ただし、ジャンルを問わず、テリープラチェット、ダグラスアダムス、スティーブンキングのすべての本を見たい.

メタクエリ

メタクエリは、構造的に分類クエリと非常に似ていますが、投稿メタテーブルのデータを使用して投稿をフィルタリングします。以下のコードは、注目の画像があるすべての公開された投稿を表示します.

$ args = array(
‘post_type’ => ‘役職’,
‘meta_query’ => アレイ(
アレイ(
「キー」=> 「_thumbnail_id」,
‘値’ => 」,
「比較」=> 「!=」,
),
),
);
$ query = new WP_Query($ args);

WordPressは、_thumbnail_idフィールドを使用して、投稿の注目画像のIDを保存します。したがって、このメタ値が空ではないすべての投稿を取得する場合、注目の画像があるすべての投稿で終了する必要があります.

ここでの秘密は、compareプロパティと型の使用方法を知っていることです。 SQLでよく知られている多数の値を使用できます: ‘=’、 ‘!=’、 ‘>’、‘>= ’、‘<‘、‘<= ‘、’ LIKE ‘、’ NOT LIKE ‘、’ IN ‘、’ NOT IN ‘、’ BETWEEN ‘、’ NOT BETWEEN ‘、’ EXISTS ‘(からWordPress 3.5以上)、’ NOT EXISTS ‘(からWordPress 3.5)以上)

typeプロパティは通常、数値や日付を比較する場合に重要です。可能な値は、「NUMERIC」、「BINARY」、「CHAR」、「DATE」、「DATETIME」、「DECIMAL」、「SIGNED」、「TIME」、「UNSIGNED」です。数値を比較するときはNUMERICを使用することに注意してください。他のほとんどの場合は問題ありません。.

分類クエリと同様に、複数の要件を積み重ねてから、関係パラメーターを使用してそれらの間の関係を指定できます。.

$ args = array(
‘post_type’ => ‘役職’,
‘meta_query’ => アレイ(
‘関係’ => 「または」,
アレイ(
「キー」=> ‘気分’,
‘値’ => 配列(「幸せ」、「素晴らしい」),
「比較」=> ‘に’,
),
アレイ(
「キー」=> ‘所得’,
‘値’ => 500,
「比較」=> 」>」,
‘タイプ’ => 「NUMERIC」
),
),
);
$ query = new WP_Query($ args);

上の例は、何か良いことが起こった架空の日記からの投稿を表示します。私は幸せか素晴らしかったか、その日に500ドル以上稼いだ.

日付パラメーター

日付は少し複雑になる可能性がありますが、非常に柔軟です。の WP_Queryドキュメント あなたがより多くの情報を必要とするなら、たくさんの例があります.

特定の時間からの投稿の取得は非常に簡単です。年、月数、w(年の週)、日、およびその他のいくつかのパラメーターを使用して、時刻を指定できます。以下のコードは、2013年3月のすべての投稿を取得します.

$ args = array(
‘post_type’ => ‘役職’,
「年」=> 2013,
‘月’ => 3
);
$ query = new WP_Query($ args);

より複雑な時間範囲に入る場合は、date_queryを使用する必要があります。これにより、使い慣れた配列形式を使用して、非常に簡単に任意の範囲を指定できます。次の例は、Codexの厚意により、平日の午前9時から午後5時の間に書かれた投稿を取得する方法を示しています。.

$ args = array(
‘post_type’ => ‘役職’,
‘date_query’ => アレイ(
アレイ(
「時間」=> 9,
「比較」=> 」>= ‘,
),
アレイ(
「時間」=> 17,
「比較」=> 」<= ‘,
),
アレイ(
「曜日」=> 配列(2、6),
「比較」=> ‘の間に’,
),
),
);
$ query = new WP_Query($ args);

注文結果

リストが表示される順序は、その中の要素と同じくらい重要です。ありがたいことに、WordPressはorder_byおよびorderパラメーターを提供してくれます。順序パラメーターは非常に単純です。ASCまたはDESCを使用して、昇順または降順で並べ替えることができます。.

order_byパラメータには、「none」、「ID」、「author」、「title」、「name」、「type」、「date」、「modified」、「parent」、「rand」など、いくつかの値を指定できます。 、「comment_count」、「menu_order」、「meta_value」、「meta_value_num」、「post__in」。 meta_valueによる順序付けは特に便利です。この場合、meta_keyフィールドも指定することを忘れないでください.

$ args = array(
‘post_type’ => ‘ペインティング’,
‘meta_query’ => アレイ(
アレイ(
「キー」=> ‘価格’,
‘値’ => 50000,
「比較」=> 」>」,
‘タイプ’ => 「NUMERIC」
),
),
‘order_by’ => 「meta_value_num」,
‘meta_key’ => ‘価格’
);
$ query = new WP_Query($ args);

この例では、50,000ドル以上の価値のある絵画を取得し、価格の昇順で注文します。価格は数値として保存されるため、文字列に使用されるmeta_valueとは対照的に、結果を順序付けるためにmeta_value_numを使用しました。.

言及する価値のある別の順序は、post__inです。このpost__inは、それ自体がパラメータであり、取得する投稿IDの配列を指定できます。デフォルトでは、WordPressは投稿を日付順に並べ替えます。post__inで指定した順序は保持されません。値による順序としてpost__inも使用する場合、WordPressは順序を保持します.

$ args = array(
‘post_type’ => ‘役職’,
‘post__in’ => 配列(23、441、12、322、34、33),
‘order_by’ => 「post__in」,
);
$ query = new WP_Query($ args);

まとめ

このWP_Queryの紹介から、これが確かに強力なクラスであることは明らかです。 WP標準の方法で独自の基準を使用して投稿を取得できます。そのを見てください ドキュメンテーション 詳細およびいくつかの優れたプロパティとメソッドについては、このクラスがクエリとループを操作するために提供しています.

WP_Queryは、WordPressを優れた一般的なCMSにするものの一部です–モジュールからカスタマイズ可能な方法でデータベースからオブジェクトを取得する機能.

ご不明な点がございましたら、コメント欄でお知らせください!

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map