Wp_Query

Updated December12,2019

Wp_Queryは、データベースからコンテンツをロードするWordPressのPHPクラスです。 開発者は、サイトのフロントエンドに表示されるコンテンツのカスタムリストを作成するためにWp_Queryに依存しています。

Wp_Queryがどのように機能するかを理解するために、例を見てみましょう。 ここでは、三つの”昇格”ツアーを表示するページです:

フロントエンドでのツアーの表示
フロントエンドでのツアーの表示

これらのツアー投稿をデータベースからロードするにはWp_Queryを使用する必要があります。 このリストを2つの方法で作成する方法を示します:

  1. PHPコードによるWp_Queryの使用(プログラミングが必要)
  2. Wp_Queryの使用(ツールセットGUIを使用)(プログラミングは必要ありません)

PHPコード

でWp_Queryを使用すると、以下のコードはクエリ部分です。 ここで、Wp_Queryは、基準に一致するデータベースから三つのランダムな”ツアー”をロードします。

最初に、コードは実行する必要があるクエリのすべての詳細を含む引数の配列($args)を構築します。 次に、Wp_Queryクラスを呼び出し、引数に一致するアイテム(tours)を返すように要求します。

function display_promoted_tours(){ // Create an array of arguments, which will tell WP_Query what information to load from the database $args = array( 'post_type' => 'tours', 'post_status' => 'publish', 'limit' => 3, 'orderby' => 'rand', 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'tour-status', 'field' => 'slug', 'terms' => array( 'promoted' ), 'operator' => 'IN' ) ), 'meta_query' = array( 'relation' => 'AND', array( 'key' => 'wpcf-valid-until', 'value' => strtotime( 'today 00:00' ), 'type' => 'NUMERIC', 'compare' = '>' ) ) ); // Call WP_Query and load the content from the database $my_query = new WP_Query( $args ); // Now display the "tours" if ( $my_query->have_posts() ) : while ( $my_query->have_posts() ) : $my_query->the_post(); echo "<div class='card'>"; if ( has_post_thumbnail() ) : echo "<a href='" . get_the_permalink() . "' title='" . the_title(null,null,false) . "'>" . get_the_post_thumbnail() . "</a>"; endif; echo the_title( '<h3>', '</h3>', false); echo "<button class='button-style'><a href='" . get_the_permalink() . "'>Learn more</button>"; echo "</div>"; endwhile; wp_reset_postdata(); endif;}

これで、データベースからコンテンツをロードし、フロントエンドに表示するコードが得られました。 最後のステップでは、このコードをテーマのテンプレートのいずれかに追加して、表示したいページで実行するようにします。

これを行うには、次の追加の手順を実行する必要があります:

  • 子テーマを作成して、テーマのファイルを直接編集しないようにします(将来の更新の問題が発生します)
  • テーマのページをコピーします。phpテンプレートの名前を変更
  • 新しいテンプレートファイルを編集し、そこからdisplay_promoted_toursを呼び出します
  • WordPressの管理者から、このツアーのリストを表示するページを編集し、新しいテンプレートを使用するように設定します

このプロセスは正常に動作しますが、見ることができるように、かなりの量のコーディングとデバッグが必要です。 このプロセスのPHPフリーバージョンに興味がある場合は、数日ではなく数分かかる場合は、続きをお読みください。

Toolset GUIでクエリを作成する

上記と同じtravel websiteの例を使用し、PHPコーディングの代わりにToolsetを使用してクエリを作成しましょう。

以下は上記と同じ例ですが、今回はコーディングを使用せずにツールセットだけを使用します。

  1. リストを表示する場所にViews editorブロックを挿入します
  2. ロードするコンテンツを選択します
  3. リストの外観を設計します

この例では、ビュー ビューは、マップ上のマーカーとしても、どのような方法で結果を表示できます。

クエリへのページネーションの追加

コンテンツの長いリストを作成する場合は、ページネーションを追加することでそれを分解することができます。

ページネーションを使用したビュー
ページネーションを使用したビュー

ページに結果を表示するには、長いリストの代わりに、次の操作が必要です:

  1. ビューのページネーションを有効にする
ビューブロックでのページネーションの有効化
ビューブロックでのページネーションの有効化

  1. ページネーションコントロールの設計
ページネーションコントロールの設計
ページネーションコントロールの設計

カスタム検索の作成

結果をリストとして表示するだけでなく、クエリを使用してカスタム検索を作成することもできます。 カスタム検索は、ユーザーが結果をフィルタリングし、彼らが探している正確なコンテンツを見つけることを可能にするフロントエンドコ

カスタム検索の構築
WordPressブロックエディタを使用したカスタム検索の構築
フロントエンドでのカスタム検索の使用
フロントエンドでのカスタム検索の使用

クエリ結果をマップに表示する

投稿にカスタムアドレスフィールドがある場合は、それらをマップに表示できます。

マップ上のクエリ結果の表示
マップ上のクエリ結果の表示

クエリの制限とフィルタリング

構築するクエリは、選択したタイプのすべての項目をデータベースからロードする必要はありません。 クエリを制限およびフィルタリングして、取得したい正確な結果を返すことができます。

たとえば、次のようなクエリを作成できます:

  • 最初のいくつかの結果を返す
  • カスタムフィールドとタクソノミの値に応じて結果をフィルタリング
  • ポスト関係に応じて結果をフィルタリング
  • フロントエンドの入力に応じて結果をフィルタリングする(カスタム検索を作成する))
クエリの制限とフィルタリングクエリ
クエリの制限とフィルタリングクエリ

コメントを残す

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

Previous post 側面位置尿管鏡検査:逆行caliceal石の処置を助ける新しい位置アプローチ
Next post RC Flying Field