目次
メインクエリに基づいて変数を定義する
例 1: カテゴリ ページに 1 つの投稿タイプのみの投稿を表示する
例 2: メイン クエリを WP_Query および foreach と組み合わせて複数のループを出力する
例 3: 2 つの投稿タイプに対する 2 つの個別のクエリ
上記の例からわかるように、
ホームページ バックエンド開発 PHPチュートリアル WP_Query をメインクエリとマージする

WP_Query をメインクエリとマージする

Aug 30, 2023 pm 07:57 PM
wp_query (wordpress) メインクエリ(ワードプレス) マージ (コード)

WP_Query をメインクエリとマージする

このシリーズのここまででは、WP_Query を使用してテーマまたはプラグインで使用するカスタム クエリを作成する方法を学習しました。

ほとんどの場合、メイン クエリのパラメータとは別のまったく新しいパラメータ セットを指定して WP_Query を使用しますが、パラメータにメイン クエリを含めたい場合はどうすればよいでしょうか?

これを行う例としては次のようなものがあります。

  • カテゴリまたはカテゴリ ページでは、1 つの投稿タイプの投稿のみを表示します
  • カテゴリ ページでは、現在のカテゴリと他のカテゴリ、タグ、または分類用語を含む投稿を表示します
  • 投稿タイプのページでは、特定のメタデータを持つ投稿のみを表示します

何度でも言いますが、メイン クエリと独自のカスタム クエリを組み合わせる機会はたくさんあります。

これを 3 つの例で示します: 1 つ目はループを使用した単純な例です。2 つ目は foreach を使用して、3 つの投稿タイプごとに 1 つずつ複数のループを出力します。3 つ目は両方の投稿を出力します。 2 つの別個のクエリを使用してカテゴリ アーカイブのタイプを決定します。

メインクエリに基づいて変数を定義する

ただし、メイン クエリと WP_Query を組み合わせているため、現在のクエリ オブジェクトの引数を WP_Query 引数で使いやすい方法で保存する必要があります。最も簡単な方法は、変数に代入することです。

これは、WP_Query パラメータを次のように定義する前に実行してください:

リーリー

get_queried_object() この関数は、オブジェクトが何であっても、現在クエリされているオブジェクトを返します。単一の投稿では投稿オブジェクトのみを返しますが、アーカイブではカテゴリ、タグ、用語オブジェクト、またはアーカイブに関連するオブジェクトを返します。クエリオブジェクトのIDを返します。

この $mainquery 変数を WP_Query パラメーターで使用できます。次に、いくつかの例を見てみましょう。

例 1: カテゴリ ページに 1 つの投稿タイプのみの投稿を表示する

Web サイトにカスタム投稿タイプを追加し、そのカスタム投稿タイプのカテゴリを有効にしているとします。各カテゴリのカテゴリ アーカイブでは、投稿を表示するのではなく、新しい投稿タイプの投稿を表示したいとします。これを product とします。

クエリは次のようになります:

リーリー

上で使用した category_name パラメータはカテゴリ スラッグをパラメータとして受け取るため、カテゴリ スラグを出力するには変数の後に ->slug を追加する必要があります。

これにより、現在のクエリ カテゴリを持つデータベースから product 投稿タイプの投稿を取得するクエリが得られます。 category.php ページ テンプレートで使用できます。

注: pre_get_posts フックを使用してメイン クエリを変更し、それを条件関数と組み合わせてカテゴリ アーカイブをチェックすることによって、この結果を達成することもできます。

例 2: メイン クエリを WP_Query および foreach と組み合わせて複数のループを出力する

次の例では、現在のカテゴリ ページからすべての投稿を出力しますが、すべてを 1 つのブロックに表示するのではなく、投稿の種類ごとに分けて表示します。

これは、CSS を使用して投稿タイプをページ上のブロックまたは列に分類したり、単に異なるリストに分離したりできることを意味します。

これを行うには、次のコードを使用できます:

リーリー

これは前に使用した $mainquery 変数を使用しますが、サイトに登録されているすべての投稿タイプを保存する $post_types 変数と $post_type 変数には、個々の投稿タイプが順番に格納されます。

例 3: 2 つの投稿タイプに対する 2 つの個別のクエリ

最後の例は 2 番目の例と似ていますが、投稿タイプを 2 つの別々のクエリに分割し、それぞれに独自の異なるループを持たせます。これにより、各コンテンツに表示される内容をより詳細に制御できるため、商品の目玉画像を含めたり、異なるレイアウトを指定したりするなど、商品とは異なる方法で投稿を表示できます。

Web サイトで product 投稿タイプが登録され、そのカテゴリが有効になっており、同じカテゴリのブログ投稿も書いているとします。各カテゴリのアーカイブ ページで、最新の投稿 10 件を表示し、同じカテゴリ内のすべての製品のリストを表示したいとします。

これを行うには、次のようなコードを使用できます:

リーリー

その後、各ループを異なる方法で記述して、投稿タイプごとに異なるデータを出力できます。

###まとめ###

上記の例からわかるように、

WP_Query

を使用すると、メイン クエリとは別に完全なカスタム クエリを作成できるだけでなく、現在のクエリのオブジェクトをマージして、アーカイブ ページのより強力なクエリ。 <p>上記の例は、カテゴリ、作成者、日付などの他のアーカイブ タイプを使用して実行することもできます。もっと可能性を考えられるかどうか考えてみてください! </p>

以上がWP_Query をメインクエリとマージするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 Apr 03, 2025 am 12:04 AM

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

PHPにおける後期静的結合の概念を説明します。 PHPにおける後期静的結合の概念を説明します。 Mar 21, 2025 pm 01:33 PM

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

システムの再起動後にUnixSocketの権限を自動的に設定する方法は? システムの再起動後にUnixSocketの権限を自動的に設定する方法は? Mar 31, 2025 pm 11:54 PM

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...

PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? Apr 01, 2025 pm 03:12 PM

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

フレームワークセキュリティ機能:脆弱性から保護します。 フレームワークセキュリティ機能:脆弱性から保護します。 Mar 28, 2025 pm 05:11 PM

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 Mar 28, 2025 pm 05:12 PM

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

See all articles