タグ付けされた質問 「meta-query」

ポストメタデータに基づいて、ページやCPTなどのポストデータをデータベースにクエリするために、WP_Queryクラスに組み込まれたメカニズムを参照します。

12
メタ値をシリアル化配列として持つmeta_query
私は、カスタム投稿タイプと、カスタム投稿タイプに関連付けられたメタボックスを介して入力されたカスタムデータを作成するプロジェクトに取り組んでいます。何らかの理由で、各メタボックスの入力が配列の一部になるようにメタボックスをコーディングすることにしました。たとえば、経度と緯度を保存しています: <p> <label for="latitude">Latitude:</label><br /> <input type="text" id="latitude" name="coordinates[latitude]" class="full-width" value="" /> </p> <p> <label for="longitude">Longitude:</label><br /> <input type="text" id="longitude" name="coordinates[longitude]" class="full-width" value="" /> </p> 何らかの理由で、各メタボックスに単一のポストメタエントリを作成するというアイデアが気に入りました。オンsave_postフック、私はそうのようなデータを保存します。 update_post_meta($post_id, '_coordinates', $_POST['coordinates']); 私がこれを行ったのは、3つのメタボックスがあり、各投稿に3つのpostmeta値があるだけだからです。しかし、これで潜在的な問題に気づきました。WP_Queryを使用して、これらのメタ値に基づいて特定の投稿のみを引き出したい場合があります。たとえば、緯度の値が50を超えるすべての投稿を取得したい場合があります。データベースにこのデータが個別にあり、おそらくキーを使用してlatitudeいた場合、次のようにします。 $args = array( 'post_type' => 'my-post-type', 'meta_query' => array( array( 'key' => 'latitude', 'value' => '50', 'compare' => '>' ) …

2
Meta_query比較演算子の説明
meta_queryで比較に使用できる演算子がたくさんあることに気付きました。しかし、私は私が使用すべきかをオペレータはかなりわからない、それは何らかの形のように混乱している=とLIKEオペレータ。 各演算子の正確な意味と、それらを使用する条件を知りたいです。 = != > >= < <= LIKE NOT LIKE IN NOT IN BETWEEN NOT BETWEEN NOT EXISTS ありがとう。

9
検索クエリ( 's')でメタクエリ( 'meta_query')を使用する
デフォルト(タイトル、コンテンツなど)だけでなく、特定のカスタムフィールドも検索する検索を作成しようとしています。 私の現在のクエリ: $args = array( 'post_type' => 'post', 's' => $query, 'meta_query' => array( array( 'key' => 'speel', 'value' => $query, 'compare' => 'LIKE' ) ) ); $search = new WP_Query( $args ) ... これは、検索クエリとメタクエリの両方に一致する投稿を返しますが、どちらか一方に単純に一致する投稿も返すようにします。 何か案は?

3
複数のリレーションキーを持つネストされたmeta_query
Wordpressがネストされたを実行できmeta_query、それぞれが異なるリレーションキーを持つことができるかどうか興味がありますか?Wordpress 3.0では、tax_queryこの機能を実行できます。これにと同等のものがあるかどうか疑問に思っていmeta_queryます。 $results = query_posts( array( 'post_type' => 'event_id', 'meta_query' => array( 'relation' => 'AND', array( 'relation' => 'OR', array( 'key' => 'primary_user_id', 'value' => $user_id ), array( 'key' => 'secondary_user_id', 'value' => $user_id ) ), array( 'key' => 'date', 'value' => array( $start_date, $end_date ), 'type' => 'DATETIME', 'compare' …

5
meta_fieldとして配列を使用してmeta_queryを作成するにはどうすればよいですか?
私のクエリの引数は次のとおりです。 $args = array( 'post_type' => 'news', 'meta_query' => array( array( 'key' => 'topics', 'value' => 'sports', ) ) ); これtopicsは文字列の場合は機能しますが、配列の場合は機能しません。topicsたとえば、次の場合にこのクエリを機能させたいarray( 'sports', 'nonprofit', etc. ) meta_keyとして配列を使用してメタクエリを作成する方法はありますか?
16 query  meta-query 

4
WP REST API 2を使用して複数のカスタムフィールドをフィルタリングする
AND関係のある複数のacfカスタムフィールドに基づいて投稿をフィルタリングしたい。このようなもの: $args = array( 'post_type' => 'product', 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'color', 'value' => 'blue', 'compare' => '=', ), array( 'key' => 'price', 'value' => array( 20, 100 ), 'type' => 'numeric', 'compare' => 'BETWEEN', ), ), ); さらにフィルターがあるかもしれません。これらをREST API 2フィルターに変換するにはどうすればよいですか?

2
meta_query 'compare' => 'IN'が機能しない
まず第一に、それが重複していることを知っていますが、古い回答はどれも役に立ちませんでした。 から投稿を検索していpost_metaます。これが私のコードで、現在は何も返しません。 $args = array( 'numberposts' => -1, 'post_type' => 'post', 'meta_query' => array( array( 'key' => 'system_power_supply', 'value' => array('single', 'redundant'), 'compare' => 'IN', ) ) ); $query = new WP_Query($args); echo $query->found_posts; 削除すればmeta_query動作します。私はこれらのことを確信しています: keyまたはにスペルミスはありませんvalue。 ポストタイプは post そこで「system_power_supply」内の「一」の値を持つポストが。ただし、投稿フィールドは高度なカスタムフィールドによって生成されます。

2
WP_Query meta_queryキーでREGEXPを使用する
このようにWP_QueryでREGEXPを使用できることはわかっています。 $query = new WP_Query(array( 'posts_per_page' => -1, 'post_status' => 'publish', 'meta_query' => array( array( 'key' => 'custom_fields', 'value' => 'foo[(][0-9][)]', // with regex stuff 'compare' => 'REGEXP', ), ), )); しかし、キーにも正規表現が必要です。このような: $query = new WP_Query(array( 'posts_per_page' => -1, 'post_status' => 'publish', 'meta_query' => array( array( 'key' => 'custom_fields[(][0-9][)]', // …

1
meta_queryを使用して、カスタムフィールドでフィルタリングし、別のフィールドで並べ替えるにはどうすればよいですか?
次のコード(functions.php内)を使用すると、(CPTイベントの)私の投稿は_start_dateではなく_end_date順に並べられます。WP 3.1.3以降、これに対する適切な解決策は何ですか?もちろん、非推奨のの使用は避けたいですmeta_key。 add_filter( 'pre_get_posts', 'my_get_posts' ); function my_get_posts( $query ) { if ( is_home() ) { $query->set( 'post_type', 'event' ); $query->set( 'meta_key', '_start_date' ); $query->set( 'orderby', 'meta_value_num' ); $query->set( 'order', 'ASC' ); $query->set( 'meta_query', array( array( 'key' => '_end_date', 'value' => time(), 'compare' => '>=', 'type' => 'numeric' ) ) …

2
複数のメタキーによるWP REST API v2のクエリ
REST APIのv2を使用して、複数のメタキーでいくつかの投稿をクエリしたいと思います。v1では、URLを次のようにフォーマットでき、&filter[meta_value][month]=12&[meta_value][year]=2015(メタ値をAPIに公開した後)機能しました。 今v2では、このGitHubスレッドにリストされているメソッドを使用することによってのみこれを機能させることができます:https : //github.com/WP-API/WP-API/issues/1599#issuecomment-161166805 基本的に、次のrest_query_varsようなフィルターを使用してメタフィールドを追加しました。 add_filter( 'rest_query_vars', 'flux_allow_meta_query' ); function flux_allow_meta_query( $valid_vars ) { $valid_vars = array_merge( $valid_vars, array( 'meta_key', 'meta_value', 'meta_compare' ) ); return $valid_vars; } これで、のようなURLを使用して1つのメタキーでフィルタリングできますwp-json/wp/v2/posts?filter[meta_key]=test&filter[meta_value]=on。 ただし、複数のメタキーでフィルター処理する唯一の方法のように思えるカスタムフィルターを作成します。誰かが私を正しい方向に向けることができますか?

1
ホームページで(meta_queryを使用して)通常の投稿タイプとカスタム投稿タイプを混在させる
これを達成する方法がわかりません。サイトのホームページで標準の投稿とカスタムの投稿を混在させようとしていますが、メタ値が設定されている場合にのみカスタムの投稿を表示します。投稿の表示は'post_type' => array('game', 'post')正常に機能しますが、meta_queryに追加すると、通常の投稿が表示されなくなります(meta_query条件を満たさないため、これは理にかなっています)。 では、通常の投稿が引き続き含まれるように、meta_queryをカスタム投稿タイプのみに制限するにはどうすればよいですか?

4
get_posts()でmeta_query引数のエイリアスを設定します
を実行するときにmeta_query引数にエイリアスを設定する方法はありget_posts()ますか?クエリの1つでパフォーマンスが低下しています。最適化するには、1つだけ必要なときに3つのテーブルを結合するのではなく、同じ結合テーブルを再利用できる必要があります。 私の現在の例... $args = array( 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'abc_type', 'value' => array('puppy', 'kitten'), 'compare' => 'IN', ), array( 'relation' => 'OR', array( 'relation' => 'AND', array( 'key' => 'abc_type', 'value' => 'puppy', 'compare' => '=', ), array( 'key' => 'abc_color', 'value' => 'pink', 'compare' …

2
並べ替え:orderby meta_value_num THENを使用したカスタムクエリ
次の条件に一致するカスタム投稿タイプクエリを実行しようとします。 最初に映画を降順で年順に並べ替え、 その後(年の「内部」の順序で)タイトルごとにアルファベット順に並べ替えます。 希望する出力: 映画タイトルA、2006 映画タイトルZ、2006 ... 映画タイトルA、1996 映画タイトルZ、1996 次のコードを使用します。 $wp_query = new WP_Query(); $wp_query->query( array( 'post_type' => 'movies', 'distribution' => 'companyA', 'meta_key' => 'year', 'orderby' => 'meta_value_num title', 'order' => 'DESC', 'posts_per_page' => -1, 'post_status' => 'publish', )); 私はいくつかのことを試しましたが、この「逆」の結果しか得られません。 映画タイトルA、1996 映画タイトルZ、1996 ... 映画タイトルA、2006 映画タイトルZ、2006 DESC、ASCを変更すると、タイトルのソートのみが変更されます。しかし、タイトルではなく年に適用する必要があります。 2つのorderby値を使用する正しい方法ですか?または、meta_queryまたはカスタムSQLを使用する必要がありますか? 事前にTHX! これが結果のSQLクエリです $GLOBALS['wp_query']->request …

3
3つのキーを持つ複雑なメタクエリ
問題は本質的にSQLクエリ構造に関連していると思います。私はエキスパートではありません... 2つのパラメーターで投稿(カスタム投稿タイプ)を検索する必要があります。 pd_city pd_country meta_query関係は「OR」であるため、上記の2つのいずれかがLIKEの場合、結果が得られることに注意してください。 3番目のキー(is_sponsored)は投稿のソートに使用されます!1または0にすることができ、 "is_sponsored"の値が1に等しい投稿が一番上に表示されます。 だからここにWordPressの事があります: $sfp_query_args = array( 'sfp_complex_search' => 'yeap', 'tax_query' => array( array( 'taxonomy' => 'sfp_post_category', 'terms' => $term_id ) ), //'meta_key' => 'is_sponsored', 'post_type' => 'sfpposts', 'post_status' => 'publish', 'showposts' => (int)$per_page, 'paged' => $paged, 'meta_query' => array( 'relation' => 'OR', array( 'key' => …

2
2つのキーによるmeta_queryソート
(カスタム)投稿を2つのカスタムフィールド値でソートする必要があります... カスタムフィールド名1:is_sponsored[値はいずれかになります1か0] カスタムフィールド名2:sfp_date[ timestamp別名、現在の投稿日(秒)] 「is_sponsored」の値が1の投稿は、「sfp_date」でDESC終了順に並べ替えて、一番上にする必要があります。「is_sponsored」の値が0 である他のすべての投稿は、下に「-」の降順でリストさsfp_dateれます。 私のようなものがあります: $sfp_query_args = array( 'tax_query' => array( array( 'taxonomy' => 'sfp_posts', 'terms' => array( 1, 5, 8 ) ) ), 'post_type' => 'sfpposts', 'post_status' => 'publish', 'showposts' => 15, 'paged' => $paged, 'meta_key' => 'sfp_date', 'orderby' => 'meta_value_num', 'order' => 'DESC', 'meta_query' => array( …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.