WordPress Meta_Query:あなたが知る必要があるすべて

公開: 2022-04-30

WordPressの最も強力なツールの1つは、投稿にカスタムフィールドを追加する機能です。 多くの開発者は、投稿に高度なカスタムフィールドまたはカスタムメタフィールドを使用します。

この投稿では、WordPressのmeta_query関数を使用してカスタムフィールドで投稿をクエリする方法について説明します。 これは、多くのカスタム機能を備えたサイトに役立ちます。


メタ値による投稿のクエリ

おそらく、カスタムフィールドを使用して投稿をクエリする最も一般的な方法は、1つの特定のメタ値をターゲットにすることです。 たとえば、投稿に「注目」かどうかを判断するために使用されるカスタムフィールドがあるサイトがあるとします。 これは、WordPressサイトで注目のセクションを作成するときによく見られます。

<?php
$ meta_query_args = array (
'meta_query' => array (
array (
'key' => 'featured_post' ,
'value' => 'yes' ,
'compare' => '='
)
)
);
$ meta_query = new WP_Query ( $ meta_query_args );
view raw wordpress-query-post-meta-value.php hosted with by GitHub

もちろん、上記のコードはフィールドとメタキーのタイトルによって異なりますが、「キー」はカスタムフィールドの名前であり、「値」は投稿のクエリ対象です。 'compare'フィールドは、後ほど説明するさまざまな比較操作に使用されます。

これをWP_Queryで使用すると、ループ関数が投稿を表示するのに最適な配列を取得できます。 この投稿では、WP_Query出力を表示する方法ではなく、meta_query関数についてのみ説明します。


複数のメタ値による投稿のクエリ

メタキーの値を複数の値と照合する場合は、「IN」演算子を使用するのが最適です。

<?php
$ meta_query_args = array (
'meta_query' => array (
array (
'key' => 'city_name' ,
'value' => array ( 'New York City' , 'London' , 'San Francisco' ),
'compare' => 'IN'
)
)
);
$ meta_query = new WP_Query ( $ meta_query_args );
view raw wordpress-query-post-meta-value-multiple.php hosted with by GitHub

複数のメタキーによる投稿のクエリ

単一のメタキーを使用して投稿をクエリしたので、複数のフィールド/キーをクエリして1つ実行してみましょう。 これにより、複数のカスタムフィールドに基づいて投稿をクエリできます。 この例では、クエリを配列にネストし、meta_queryに「relation」を追加することで、上記の両方を組み合わせています。

<?php
$ meta_query_args = array (
'meta_query' => array (
'relation' => 'AND' ,
array (
array (
'key' => 'city_name' ,
'value' => array ( 'New York City' , 'London' , 'San Francisco' ),
'compare' => 'IN'
),
array (
'key' => 'featured_post' ,
'value' => true ,
'compare' => '='
)
)
)
);
$ meta_query = new WP_Query ( $ meta_query_args );
view raw wordpress-meta-query-multiple-keys.php hosted with by GitHub

「relation」フィールドは「AND」または「OR」に設定できるため、すべての条件が満たされるか、1つだけが満たされる必要があります。


メタクエリ比較演算子

メタクエリで投稿をクエリするのに役立つ演算子がいくつかあります。 各比較演算子の簡単な内訳と、それらの使用方法を次に示します。

  • '='メタ値と等しいメタキーを照会します
  • '!='メタ値と等しくないメタキーを照会します
  • '>'メタ値より大きいメタキーを照会します
  • '>='メタ値以上のメタキーを照会します
  • '<'メタ値よりも小さいメタキーを照会します
  • '<='メタ値以下のメタキーを照会します
  • 'LIKE'単語/フレーズを含むメタキーを照会します(たとえば、「red」をクエリすると、「Red」、「looksred」、および「redstyle」というフレーズに一致します)
  • 「好きではない」上記の反対
  • 'IN'値が配列に存在するメタキーを照会します
  • 'NOTIN'値が配列に存在しないメタキーを照会します
  • 'BETWEEN'値が2つの数値の間にあるメタキーを照会します
  • 'NOTBETWEEN'値が2つの数値の間にないメタキーを照会します
  • 'EXISTS'値が存在するメタキーを照会します
  • 'NOTEXISTS'値がまったく存在しないメタキーを照会します
  • 'REGEXP'正規表現に基づいてメタキーを照会します
  • 'NOTREGEXP'上記のREGEXPの反対

メタフィールドで投稿を並べ替える方法

もちろん、WordPressでは、WP_Queryの「orderby」オプションを使用してカスタムフィールドを使用して投稿を並べ替えることができます。 'orderby'を'meta_value'に設定してから、'meta_key'値をフィールド名に設定する必要があります。 デフォルトでは、これは、フィールドが数値の場合にクエリをアルファベット順に返すか、数値で並べ替える場合に最も役立ちます。

<?php
$ meta_query_args = array (
'post_type' => 'page' ,
'order' => 'ASC' ,
'meta_key' => 'city_name' ,
'orderby' => 'meta_value'
);
$ meta_query = new WP_Query ( $ meta_query_args );
view raw wordpress-orderby-meta-query.php hosted with by GitHub