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

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

4
まだ設定されていないキーのmeta_query
ギャラリーシステムのカスタム投稿タイプを照会しようとしています。ギャラリーを「注目の」ギャラリーとして設定するためのチェックボックスがあります(More Fieldsプラグインを介して設定)。これをオンにすると、メタ値が1になり、オフにすると0になります。すべて良好です。ただし、ボックスがチェックされていない場合、メタキーは作成されません。つまり、NOT LIKE 1が存在しないため、クエリを実行できません。 必要なクエリは、このメタ値で「1」とマークされていない4つのギャラリーだけでなく、この値がまったくないギャラリーも取得することです。新しく追加された投稿にこのメタキーのデフォルト値を常に与える方法はありますか(ボックスがチェックされていない場合は常にデフォルトで0にする)、またはまだ設定されていないキーを照会する方法はありますか? 私の現在のクエリは: $args = array( 'post_type' => 'gallery', 'showposts' => 4, 'meta_key' => 'gal-ID', 'order_by' => 'meta_value', 'order' => 'ASC', 'meta_query' => array( array( 'key' => 'main-gal', 'value' => false, ) ), ) ); そして、私は 'compare' => 'NOT LIKE'、 '!='などを使ってさまざまな試みを試しました。 何か案は?このチケットは、それが整理されるべきものであることを示唆しているようです: http://core.trac.wordpress.org/ticket/18158 ありがとう!

1
meta_queryを使用してquery_postsでmeta_keyをorderbyし、日付で2次ソートする方法は?
私は過去数日間にわたって問題のトラブルシューティングを行っており、サークルに行き続けています。この質問に答えるために、新鮮な目を実際に使うことができました... そのため、実行する必要のあるクエリに関連するいくつかのカスタムフィールド "post-expired"と "my-sort-order"が含まれているワードプレスサイトを使用しています。query_postsを実行すると、結果が "post-expired"が "yes"ではないpostになるようにします(この部分は私のコードで機能します)。「my-sort-order」のDESC番号の値で結果を並べ替えることもできます(同様に機能します)。また、「my-sort-order」にタイがある場合、最新の投稿で日付で2番目の並べ替えが必要です。最初。 日付による2番目の並べ替えは、問題が発生している場所です。 ここに私が今持っているコードがあります: <?php $args = array( 'paged' => $paged, 'meta_query'=> array( array( 'key'=>'post-expired', 'value'=> 'yes', 'compare' => '!=' ) ), 'meta_key'=>'my-sort-order', 'orderby'=>'meta_value_num', 'order'=>'DESC' ); $args = array_merge( $args , $wp_query->query ); query_posts( $args ); ?> 上記のコードを使用して、期限が切れていない投稿を正しく取得し、my-sort-orderの降順で並べ替えます(つまり、100は99の前に表示されるなど)。しかし、両方の投稿に同じ並べ替え順序の値がある場合、制御できないように見える(そして実際に何に並べ替えられているのかわからない)ある種類の二次並べ替えが発生します。 これを解決するための最初のアイデアは、その投稿に特定のソート順を設定したい場合にのみ、「my-sort-order」に値を追加することでした。残りの投稿でこのフィールドの値が空白のままになっていると、DESC日付によるデフォルトの並べ替えで返されます(並べ替え順序が設定された投稿の後)。ただし、実際に起こったのは、ソート順の値が設定されていない投稿がまったく返されなかったということです... 次に、次のように複数の値をorderbyフィールドに追加してみました。 ('orderby'=>'meta_value_num date') それは私がしようとしていた両方の並べ替え順序を完全に破壊し、予期しない方法で投稿を返しました。複数のorderby値が許可されているように見えましたが、何らかの理由でここでは機能しません。 現時点では、これらの潜在的なソリューションのいずれかを機能させる方法がわかりません。誰でも私がどのようにできるか知っていますか1)最初に「my-sort-order」フィールドで投稿を並べ替え、次にそのフィールドに値のない残りの投稿をデフォルトの日付の並べ替えで返します。または2)「my-sort-order」に関連のある投稿が日付順(最新が最初)にソートされるように、2次orderbyソートを制御する方法を理解しますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.