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ไม่ใช่ชื่อของคีย์ ดูพารามิเตอร์ orderby WP_Query


ทำงานการรักษาไชโยเพื่อน
Adam Moss

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อาร์กิวเมนต์แบบสอบถามที่เป็นสถานที่เดียวที่คุณจะเคยเห็นหรือการใช้งาน
Milo

1
@adamj มีวิธีแก้ปัญหานี้ไหม? ฉันต้องการเรียงลำดับโพสต์ทั้งหมดโดยไม่คำนึงว่า meta_key มีอยู่สำหรับโพสต์หรือไม่
unbreak

1
@unbreak ทางออกที่ง่ายคือการแยกวิเคราะห์โพสต์ทั้งหมดและเพิ่มmeta_keyไปยังพวกเขาก่อนที่จะใช้แบบสอบถามคำสั่ง
adamj
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.