Wp_Queryを使用してWordPressでクエリを実行する

WordPressで投稿されたSamantha Rodriguez

最終更新日2月24日, 2020

あなたのワードプレスのウェブサイトを供給するデータベースは、貴重な情報がいっぱいです。 これは多くの異なった変数によってあなたのポストおよびページをろ過することを可能にするものがである。 ただし、表示したいものがテーマの一部でない場合は、そのデータを使用する他の方法があります。

これがWp_Queryの出番です。 これは、さまざまなパラメータを使用するPHPクラスです。 その結果、それはあなたがあなたのウェブサイト上で使用または表示するためにWordPressのデータベースからデータを引き出すことができます。

この記事では、Wp_Queryクラスとその使用方法についてより深い理解を提供します。 我々はまた、それを使用するときに従うべきいくつかの重要な手順をご案内します。 あなたは準備ができている場合は、右に飛び込むましょう!

Wp_Queryとは何ですか?

前述したように、Wp_QueryはWordPressデータベースで使用されるPHPクラスです。 この特定のクラスはいくつかのことを行うことができますが、主にデータベースから投稿をプルするために使用されます。

その名前が示すように、設定した基準に基づいてクエリを作成します。 WordPressでWp_Queryで使用できるパラメータがたくさんあるので、いくつかのユニークな方法で投稿をプルして表示することができます。 これらのオプションについては、この記事の後半で詳しく説明します。

Wp_Queryの使い方

WordPressのコードベースのさまざまな側面を学んでいるだけであっても、Wp_Queryは始めるのに適したクラスです。 さて、あなたのウェブサイト上でそれを使用することができます四つの異なる方法を分解してみましょう。

カスタムループの開始

Wp_Query呼び出しを知るための最良の方法の一つは、WordPressループを介してです。 ループが何であるかに精通していない場合は、読むことが重要な概念です。

ループは、postコンテンツを要求するデータベースへの呼び出しであり、返されるデータを表示します。 また、サイトを単一のページに表示する投稿の数など、設定されたパラメータに基づいて機能します(設定>読書メニューで設定できます)。

ループの基本は次のようになります:

<?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″のユーザーが含まれなくなります。

このメソッドで使用できるパラメータの数は無限大です。 カテゴリ情報だけでなく、高度な分類法も含めることができます。

: WordPressのカスタムクエリのバックボーン

前の例では、文字列の一部として”(arg args)”に気づいたかもしれません。 これは、含まれている’引数’を参照するクエリの重要な部分です。 返されたデータに何を含めるかをデータベースに正確に指示します。

基本的に、これらの引数は、表示したい正確な結果を決定するように設定できます。 引数を使用して変数の値を変更することもできます。 たとえば、カテゴリのリストがページに表示される方法を変更する場合は、引数を使用できます。

引数は変数と値の配列を定義します。 したがって、必要に応じて、引数を使用して配列を定義し、カテゴリを降順で表示するようにデータベースに指示できます。 また、同じ方法を使用して、投稿を含まないカテゴリを除外することもできます。

Wp_Queryのパラメータ:Category,Tag,And More

これまでは、渡すパラメータについてのみ言及してきました。 この時点で、彼らが実際に何ができるかを詳しく見てみましょう。 彼らの主な機能は、カスタム設計された投稿のコレクションを引き出すことができるようにすることです。

サイトのヘッダーで使用できるパラメータの一例として、Categoryパラメータがあります。 これを使用して、表示する特定のカテゴリを指定できます。 これは、関連するカテゴリ番号またはスラグを提供することによって行われます。

さらに、Tagパラメータで同じことを行うことができます。 もちろん、Wp_Queryの使用に関しては、CategoryパラメータとTagパラメータは氷山の一角にすぎません。

メソッドとプロパティを使用したオブジェクトの変更

Wp_Queryのようなクラスのプロパティを直接変更することはお勧めしませんが、メソッドを使 基本的に、メソッドは関数に似ていますが、プロパティは変数に相当します。

Wp_Queryには多くのプロパティがあります。 これらは、単純な”posts posts”プロパティからより複雑なプロパティまでの範囲です。 それらと対話するために使用されるメソッドが何であれ、データはあなたが配置することを選択したパラメータに基づいて返されます。

wordpressのquery_posts()

ページのメインクエリを変更する別の方法があることに注意する価値があります。 これはquery_posts()関数です。 これはWp_Queryと同様の方法で動作しますが、非常に問題になることもあります。

WordPressのコードリファレンスは、あなたのウェブサイトのメインループ内でこの機能を使用しないことを強くお勧めします。 それはプラグインやテーマでそれを避けるためにも最善です。 これは、メインクエリを完全に上書きするためです。

クエリを実行した後にメインループを”リセット”することもできるため、Wp_Queryクラスが推奨されます。 Wp_Queryを使用すると、ループ内で複数のクエリを実行できるため、wp_reset_postdata関数も実装する方法を理解する必要があります。

メインWordPressループ内にセカンダリループを埋め込んだ場合、リセット機能は最後に配置され、次のようになります:

<?php wp_reset_postdata(); ?>

これにより、デフォルトのテンプレートタグが復元され、セカンダリループが開始される前の状況に戻ります。

WP EngineでWordPressサイトをカスタマイズ

あなたのウェブサイト上の項目の表示方法を調整することができることは、WordPressを使用する利点の一つに過ぎません。 Wp_Queryを理解し、開発者リソースページで提供されるツールを活用することで、真にカスタマイズされたwebサイトを構築することができます。

コメントを残す

メールアドレスが公開されることはありません。