WP_Query - Sonuçları meta değerine göre sırala


49

Etrafı kontrol ettim ve henüz işe yaramayan bir cevap görmedim. Aşağıdaki tartışmalara sahip bir WP_Query'im var:

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

$query = new WP_Query($args);

Sonuçları, 'client_feedback_score' özel gönderi alanına göre en düşükten en yükseğe sıralamak istiyorum. Ama bu işe yaramadı gibi ... biri beni doğru yöne işaret edebilir mi?

EDIT (ÇÖZÜLMÜŞ):

Milo'nun cevabı sayesinde, sayısal bir meta değere göre sipariş için çalışma kodu:

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

Yanıtlar:


69

orderbyanahtarın adı olmalı meta_value_numya da olmamalıdır meta_value. WP_Query orderby parametrelerine bakın .


Bir tedavi çalıştı, şerefe dostum.
Adam Moss,

5
Küçük not, eğer meta_keygönderi için henüz mevcut değilse, gönderi yoksayılır.
adamj

1
@RobBenz Bu konuda muhtemelen yeni bir soru başlatmalısınız. Adım 1 Meta anahtarınıza istediğiniz değeri atayın my_meta_key, istediğin siparişi oluşturmak için her yazı için onu arayalım . Adım 2 meta_keySorgunuzda olarak ayarlayın my_meta_key. Bu, WordPress'e bu anahtarı içeren gönderileri sorgulamasını söyler. Adım 3 orderbySorgunuzu olarak ayarlayın meta_value_num. Bu, WordPress'e yalnızca gönderileri sorgulamasını değil my_meta_key, aynı zamanda bu anahtar tarafından sayısal olarak sıralamasını söyler. Bu sorgu argümanı, göreceğiniz veya kullanabileceğiniz tek yer meta_value_num.
Milo

1
@ adamj bu herhangi bir geçici çözüm var mı? Yazı için meta_ anahtarının mevcut olup olmadığına bakılmaksızın tüm gönderileri sıralamam gerekiyor.
18'de

1
@ basit kırılma basit bir çözüm tüm gönderileri ayrıştırmak meta_keyve sipariş sorgusunu çalıştırmadan önce bunlara eklemektir
adamj
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.