WP_Query を使用して WordPress でクエリを実行する
公開: 2023-02-12WordPress Web サイトにフィードするデータベースには、貴重な情報がたくさんあります。 これにより、投稿やページをさまざまな変数でフィルタリングできるようになります。 ただし、表示したいものがテーマの一部でない場合は、そのデータを使用する別の方法があります。
ここで WP_Query の出番です。これは、さまざまなパラメーターを使用する PHP クラスです。 したがって、WordPress データベースからデータを取得して、Web サイトで使用または表示することができます。
この記事では、WP_Query クラスとその使用方法についての理解を深めます。 また、使用する際に従うべきいくつかの重要な手順についても説明します。 準備ができたら、すぐに飛び込みましょう。
WP_Query とは?
前述したように、WP_Query は WordPress データベースで使用される PHP クラスです。 この特定のクラスはいくつかのことを実行できますが、主にデータベースから投稿を取得するために使用されます。
その名前が示すように、設定した基準に基づいてクエリを作成します。 WordPress の WP_Query で使用できるパラメーターは多数あるため、さまざまな方法で投稿を取得して表示できます。 これらのオプションについては、この記事の後半で詳しく説明します。
WP_Query の使用方法
WordPress コードベースのさまざまな側面を学んでいるだけでも、WP_Query は始めるのに適したクラスです。 それでは、Web サイトで使用できる 4 つの異なる方法について説明しましょう。
1.カスタムループを始める
WP_Query 呼び出しを理解する最良の方法の 1 つは、WordPress ループを使用することです。 ループが何であるかに慣れていない場合は、読んでおくべき重要な概念です。
ループは、投稿コンテンツを要求するデータベースを呼び出し、返されたデータを表示するものです。 また、サイトの 1 ページに表示する投稿の数など、設定されたパラメーターに基づいて機能します ( [設定] > [閲覧]メニューで構成できます)。
ループの基本は次のようになります。
<?php
if ( have_posts() ) :
while ( have_posts() ) : the_post();
// Display post content
endwhile;
endif;
?>
この簡単なステートメントは、基本的に、投稿がある場合は表示する必要があることを示しています。 もちろん、この基盤にさまざまなテンプレート タグを追加して、必要な表示を作成できます。
WP_Query をループに挿入することもできます。 これにより、返される投稿にパラメーターを配置できます。 それがどのように見えるかを分解しましょう:
<?php
// The Query
$the_query = new WP_Query( $args );
// The Loop
if ( $the_query->have_posts() ) {
echo '<ul>';
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '<li>' . get_the_title() . '</li>';
}
echo '</ul>';
} else {
// no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
基本ループと同じif/whileステートメントが表示されますが、追加の WP_Query 文字列があります。 ここで設定されたパラメータによって、表示される投稿が決まります。
たとえば、投稿のリストから特定の作成者を除外したい場合、ループ内で WP_Query を使用してそれを行うことができます。
$query = new WP_Query( array( 'author' => -12 ) );
これをループに配置することで、表示される投稿に著者番号「12」のユーザーが含まれなくなります。
このメソッドで使用できるパラメーターの数はほぼ無限です。 2 つの例を挙げると、カテゴリ情報と高度な分類法を含めることができます。
2. 引数: WordPress のカスタムクエリのバックボーン
前の例で、「($args)」が文字列の一部であることに気付いたかもしれません。 これは、含まれている「引数」を参照するクエリの重要な部分です。 返されるデータに何を含めるかをデータベースに正確に伝えます。
基本的に、これらの引数は、表示する正確な結果を決定するように設定できます。 引数を使用して、変数の値を変更することもできます。 たとえば、カテゴリのリストがページに表示される方法を変更する場合は、引数を使用できます。
引数は、変数と値の配列を定義します。 したがって、必要に応じて、引数を使用して配列を定義し、データベースにカテゴリを降順で表示するように指示できます。 さらに、同じ方法を使用して、投稿を含まないカテゴリを除外できます。
3. WP_Query のパラメータ: カテゴリ、タグなど
ここまでは、パラメーターについてのみ説明してきました。 この時点で、彼らが実際にできることを詳しく見てみましょう。 それらの主な機能は、カスタム デザインされた投稿のコレクションをプルできるようにすることです。
サイトのヘッダーで使用できるパラメーターの例として、Category パラメーターがあります。 これを使用して、表示する特定のカテゴリを指定できます。 これは、関連するカテゴリ番号またはスラッグを提供することによって行われます。
さらに、Tag パラメーターを使用して同じことを行うことができます。 もちろん、WP_Query を使用する場合、Category パラメーターと Tag パラメーターは実際には氷山の一角にすぎません。
4. メソッドとプロパティを使用してオブジェクトを変更する
WP_Query のようなクラスのプロパティを直接変更することはお勧めしませんが、メソッドを使用してそれらを操作できます。 基本的に、メソッドは関数に似ていますが、プロパティは変数に相当します。
WP_Query には多くのプロパティがあります。 これらは、単純な「$posts」プロパティからより複雑なものまでさまざまです。 それらと対話するために使用される方法が何であれ、配置することを選択したパラメーターに基づいてデータが返されます。
WordPress の WP_Query と query_posts()
ページのメイン クエリを変更する別の方法があることに注意してください。 これは query_posts() 関数です。 これは WP_Query と同様に機能しますが、非常に問題になる可能性もあります。
WordPress コード リファレンスでは、Web サイトのメイン ループ内でこの関数を使用しないことを強く推奨しています。 また、プラグインやテーマでは避けるのが最善です。 これは、メイン クエリを完全にオーバーライドするためです。
クエリを実行した後にメインループを「リセット」することもできるため、WP_Query クラスが推奨されます。 WP_Query を使用するとループ内で複数のクエリを実行できるため、wp_reset_postdata 関数の実装方法も理解しておく必要があります。
メインの WordPress ループ内にセカンダリ ループを埋め込んだ場合、リセット関数は最後に配置され、次のようになります。
<?php wp_reset_postdata(); ?>
これにより、デフォルトのテンプレート タグが復元され、2 次ループが開始される前の状態に戻ります。
WP Engine で WordPress サイトをカスタマイズする
Web サイトでのアイテムの表示方法を調整できることは、WordPress を使用する利点の 1 つにすぎません。 WP_Query を理解し、開発者リソース ページで提供されているツールを活用すると、真にカスタマイズされた Web サイトを構築するのに役立ちます。
ここ WP Engine では、魅力的な Web サイトを構築するために必要なリソースがあることを確認することに情熱を注いでいます。 WordPress ソリューションとホスティング プランを今すぐチェックしてください。