WP_Query-メタ値による結果の順序付け


49

私は周りをチェックしましたが、現時点で有効な答えを見ていません。次の引数を持つWP_Queryがあります。

$args = array(
    'post_status' => 'publish',
    'post_type' => 'listing',
    'meta_key' => 'client_feedback_score',
    'orderby' => 'client_feedback_score',
    'order' => 'DESC'
        );

$query = new WP_Query($args);

結果をカスタムの投稿フィールド「client_feedback_score」で並べ替えます。しかし、これはうまくいかないようです...誰かが私を正しい方向に向けることができますか?

編集(解決済み):

Miloの応答のおかげで、数値メタ値で順序付けするための作業コードは次のとおりです。

$args = array(
            'post_status' => 'publish',
            'post_type' => 'listing',
            'meta_key' => 'client_feedback_score',
            'orderby' => 'meta_value_num',
            'order' => 'DESC'
        );

回答:


69

orderbyキーの名前ではなくmeta_value_num、またはmeta_valueである必要があります。WP_Query orderbyパラメーターを参照してください。


御treat走をしました、歓声仲間。
アダム・モス

5
小さなメモ、meta_key投稿のがまだ存在しない場合、投稿は無視されます。
adamj

1
@RobBenzおそらく、このトピックに関する新しい質問を開始する必要があります。ステップ1メタキーに必要な値を割り当てmy_meta_keyます。各投稿に対してを呼び出して、必要な順序を生成します。ステップ2 meta_keyクエリにを設定しますmy_meta_key。これは、そのキーを持つ投稿を照会するようにWordPressに指示します。ステップ3 orderbyクエリにを設定しますmeta_value_num。これは、WordPressにを使用して投稿をクエリするだけでなくmy_meta_key、そのキーで数値順に並べるように指示します。このクエリ引数は、これまでに表示または使用する唯一の場所ですmeta_value_num
ミロ

1
@adamjこれは回避策ですか?投稿にmeta_keyが存在するかどうかにかかわらず、すべての投稿を並べ替える必要があります。
18

1
@unbreak簡単な解決策はmeta_key、注文クエリを実行する前にすべての投稿を解析し、それらに追加すること
です-adamj
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.