WP_Query - Sắp xếp kết quả theo giá trị meta


49

Tôi đã kiểm tra xung quanh và chưa thấy câu trả lời nào hoạt động. Tôi có WP_Query với các lý lẽ sau:

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

$query = new WP_Query($args);

Tôi muốn sắp xếp kết quả theo trường bài tùy chỉnh 'client_feedback_score', từ thấp nhất đến cao nhất. Nhưng điều này dường như không hoạt động ... bất cứ ai cũng có thể chỉ cho tôi đi đúng hướng?

EDIT (GIẢI QUYẾT):

Nhờ phản hồi của Milo, đây là mã làm việc để đặt hàng theo giá trị meta số:

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

Câu trả lời:


69

orderbynên meta_value_num, hoặc meta_value, không phải tên của khóa. Xem các tham số thứ tự WP_Query .


Làm việc một điều trị, chúc mừng bạn đời.
Adam Moss

5
Lưu ý nhỏ, nếu meta_keychưa tồn tại cho bài viết, bài đăng sẽ bị bỏ qua.
adamj

1
@RobBenz Có lẽ bạn nên bắt đầu một câu hỏi mới về chủ đề này. Bước 1 Gán bất kỳ giá trị nào bạn muốn cho khóa meta của mình, hãy gọi nó my_meta_key, cho mỗi bài đăng để tạo bất kỳ thứ tự nào bạn muốn. Bước 2 Bạn đặt meta_keytrong truy vấn của mình thành my_meta_key. Điều này bảo WordPress truy vấn các bài đăng có khóa đó. Bước 3 Đặt orderbytruy vấn của bạn thành meta_value_num. Điều này nói với WordPress không chỉ truy vấn các bài đăng my_meta_keymà còn đặt hàng số lượng theo khóa đó. Đối số truy vấn đó là nơi duy nhất bạn sẽ nhìn thấy hoặc sử dụng meta_value_num.
Milo

1
@adamj có cách nào khác không? Tôi cần sắp xếp tất cả các bài đăng, bất kể meta_key có tồn tại cho bài đăng hay không.
vỡ

1
@unbreak giải pháp đơn giản là phân tích tất cả các bài đăng và thêm meta_keychúng vào trước khi chạy truy vấn thứ tự
adamj
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.