ホームページ >バックエンド開発 >PHPチュートリアル >WP_Query をマスターする: ループの力を活用する

WP_Query をマスターする: ループの力を活用する

PHPz
PHPzオリジナル
2023-09-01 10:49:091260ブラウズ

标题重写为:Mastering WP_Query: Harnessing the Power of the Loop

このシリーズの導入部分で説明したように、WP_Query クラスには 4 つの主要な要素があります。

    クエリ パラメーター。このシリーズで詳しく紹介するパラメーターを使用します。
  • クエリ自体
  • ループすると、投稿のコンテンツ、タイトル、または表示したいものが出力されます
  • 終了: if タグと while タグを閉じて、公開データをリセットします
このチュートリアルでは、

WP_Query でループを使用する方法を説明します。これには、ループを構築する 2 つの主な方法と複数のループの使用方法が含まれます。

ループに適した位置

ループがないと、ページには何も表示されません。 WordPress が定義したパラメータを使用してクエリを実行した後、取得したデータから何を出力するかを指示する必要があります。ここでループが登場します。

したがって、3 つのラベルを使用するループがクエリの後に表示されます。

    if( $query->have_posts() )
  • 投稿があるかどうかを確認します。これは、クエリの post_count 属性の値が current_post 1 の値より小さいかどうかをチェックすることによって行われます。
  • while( $query->have_posts() ) 取得する投稿がある限り、
  • ループは投稿ごとに繰り返されます。ご覧のとおり、この have_posts() メソッドは、投稿があるかどうかを確認するために以前に呼び出したメソッドと同じです。このメソッドではポスト カウンタがインクリメントされないことに注意してください。ループ内に投稿があるかどうか、またはループの終わりにいるかどうかを知らせるだけです。また、ループが最後に達すると自動的に巻き戻します。
  • $query->the_post()
  • この特定の投稿にアクセスします。また、次の投稿の取得や投稿カウンタの増加など、他のいくつかの操作も実行します。また、私たちが使用できるようにグローバルな出版データも設定します。
have_posts()

メソッドは、ループ内では呼び出さないでください。これは、have_posts() がループを最初に巻き戻してしまい、無限ループになってしまうためです。 これが

WP_Query

クラス内のループの場所です: リーリー ループを実行した後は、

wp_reset_postdata()

を使用して整理するだけです。 ループ構造

ループの構造方法は、投稿から表示したいデータによって異なります。以下は、投稿タイトル、注目の画像、抜粋を出力するループの例です。アーカイブ ページではこのようなループを使用できます。

リーリー

このループは、上で説明したもの、つまり注目の画像、タイトル、抜粋を正確に表示します。

さらにループ: 内容を確認します

しかし、場合によっては、投稿のリストの前にタイトルを追加したり、投稿をすべて包含要素に含めたい場合もあります。これをループの前に追加した場合、クエリが実際にデータを返すかどうかに関係なく出力されます。つまり、ヘッダーの下に何もない、または不要なマークアップが存在する可能性があります。

この問題は、囲んでいる要素またはタイトルを

if

タグに入れることで簡単に解決できます。 リーリー ここでは、クエリが投稿を取得したかどうかを確認し、取得した場合は、それを含む要素を開いてタイトルを追加したことがわかります。

これは、クエリ結果をリストとして出力する場合にも便利です。特定のカテゴリ内のすべての投稿のリストを作成したいとします。

ul

要素は特定の投稿に関連していないためループ内にありませんが、投稿がある場合にのみ出力したいと考えています。そこで私はこれを使います: リーリー これは、クエリが投稿を取得したかどうかをチェックし、取得した場合は、

ul

要素を開いてループを実行します。 追加のループを実行する

WP_Query

を使用して複数のループを実行できますが、これを行うにはポスト データをリセットし、WP_Query の 2 番目のインスタンスを開始する必要があることに注意することが重要です。これは、各ループが異なるパラメーターに基づいてデータを出力するためです。 この例では、最初の記事の抜粋と注目の画像を示し、その後、後続の各記事のタイトルのみを示します:

リーリー

ここでは 2 つの重要なパラメータを使用しました:

    'posts_per_page' => '1'
  • 最初のクエリで使用すると、最新の投稿のみが出力されます。 2 番目のクエリで使用される
  • 'offset' = '1'
  • は、最初の投稿をスキップし、以下のリストで繰り返されないようにします。
  • 上記のコードからわかるように、各クエリのループは少し異なります。 1 つ目は注目の画像、タイトル、抜粋を出力し、2 つ目はクエリに投稿があるかどうかを確認し、投稿がある場合は
ul

要素を開き、各投稿のタイトルを li リンクで囲みます。要素とそのページにアクセスします。 <p> 両方のループの後に <code class="inline">wp_reset_postdata() を使用していることにも気づくでしょう。これを行わなかった場合、2 次ループの外側で template タグを使用すると、ループ内の最後の投稿に関するデータが得られます。この関数を呼び出すと、パブリケーション データがメイン クエリにリセットされます。

ループ内の投稿情報にアクセスする

ループ内で多数の関数を呼び出して、現在の投稿に関する情報にアクセスできます。このチュートリアルで使用されているものもいくつか見てきました。このセクションでは、時々使用する可能性のあるいくつかの一般的な機能のリストを示します。

タイトルを取得

投稿のタイトルを取得するには、3 つの関数を使用できます。それらは、the_title()get_the_title()、および the_title_attribute() です。 get_the_title() 関数は単に投稿のタイトルを取得するだけですが、the_title() は渡された引数に基づいてオプションのタグとともにタイトルを表示または取得します。タイトルを表示する前にクリーンアップしたい場合は、 the_title_attribute() を使用する必要があります。

抜粋または全内容を取得する

現在の投稿の抜粋を表示するための the_excerpt() という専用関数があります。提供された抜粋に複数のフィルターを適用して、視聴者に正しく表示できるようにします。すべての記事に著者による抜粋が含まれるわけではありません。この場合、表示する前に、完全な投稿の抜粋の要約バージョンが生成されます。

関数 the_content() を使用すると、投稿の完全なコンテンツを表示できます。

投稿カテゴリ、タグ、その他のメタデータを取得する

WordPress の投稿には通常、割り当てたタグまたはカテゴリがいくつかあります。 the_tags() 関数と the_category() 関数を使用すると、ループ内でこれらのタグとカテゴリのリストを表示できます。 the_author() 関数を使用して、投稿の作成者を表示します。投稿の ID には、関数 the_ID() を介してアクセスすることもできます。

リリースまたは変更の日時を取得する

WordPress には、ループ内で使用して投稿の日付 (the_date()) と時刻 (the_time()) を表示できる専用の関数があります。覚えておくべき 2 つの重要な点は、the_time() を使用して投稿が公開された日付のみを表示することもできるということです。さらに、the_date() の出力は、同じ日に公開された複数の投稿に対して 1 回だけエコーされます。これは基本的に、柔軟性と使いやすさを高めるために、ほとんどの場合 the_time() を使用する必要があることを意味します。

###まとめ###

ループがなければ、

WP_Query

は実際にはあまり役に立ちません。このループは、WordPress がクエリパラメータに基づいてデータベースから取得したデータを表示するために使用するコードです。 先ほど示したように、ループにはいくつかの変更があります。単純なループでは、クエリ パラメーターで指定した順序 (またはデフォルトでは日付の降順) ですべての投稿が出力されます。

if( $query->have_posts() )

while( $query->have_posts() ) を分離すると、ループの外側に追加のマークアップを挿入できますが、クエリがデータを返しました。最後に、WP_Query を複数回使用して、置換パラメーターを指定し、各ループの後に wp_reset_postdata() を使用することで、ページ上に複数のループを作成できます。

この記事は、Nitish Kumar からの寄稿により更新されました。 Nitish は、さまざまなプラットフォームでの電子商取引 Web サイトの作成経験を持つ Web 開発者です。彼は、日常生活を楽にするための個人的なプロジェクトに取り組んだり、夜に友達と散歩したりして、自由時間を過ごします。

以上がWP_Query をマスターする: ループの力を活用するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。