Làm thế nào để bạn sử dụng orderby với meta_query trong Wordpress 3.1?


21

Có thể sắp xếp danh sách các bài đăng tùy chỉnh của tôi, sau khi lọc nó bằng meta_query, theo dữ liệu meta mà tôi chọn không?

Ví dụ: tôi có một loại bài đăng tùy chỉnh được gọi là hội thảo trên web. Tôi đang cố gắng liệt kê tất cả các hội thảo trên web sắp tới và được sắp xếp theo trường meta tùy chỉnh có tên là webinar_startDate.

Sử dụng truy vấn sau đây, tôi có thể trả lại các hội thảo trên web không bao gồm các hội thảo trên web cũ. Tuy nhiên, chúng vẫn được phát hành theo thứ tự chúng đã được xuất bản chứ không phải bởi webinar_startDate.

<?php $my_array =  array(
    'meta_query' => array(
            array(
                'key' => 'webinar_startDate',
                'value' => date("Y-m-d H:i:s"),
                'compare' => '>=',
                'type' => 'DATETIME'
            )
    ),
    'orderby' => 'meta_value',
    'post_type' => 'webinars',
    'posts_per_page' => 20,
    'order' => 'ASC'
); ?>

Tôi nghi ngờ rằng do thay đổi từ 3.0 thành 3.1, việc sử dụng orderby => meta_value có thể khác nhau, nhưng tôi không thể tìm thấy câu trả lời trong tài liệu WordPress để giải thích điều này.

Có ai giúp được không? Cảm ơn trước.

Câu trả lời:


17

meta_querymảng mới chọn đăng bài truy vấn trả về. Vì vậy, có, bạn đang chỉ ra 'khóa' trong đó meta_query, nhưng bạn vẫn có thể sử dụng phương pháp cũ của

'orderby' => 'meta_value', 
'meta_key' => '_events_meta',

ngoài meta_query, vì các dòng này cho biết cách sắp xếp truy vấn kết quả. Vì vậy, có, bạn có thể chỉ ra cùng một meta_key hai lần.


9
Câu trả lời này không hoàn toàn đúng. Nếu bạn thêm một orderby và meta_key bên ngoài meta_query hiện có, kết quả sẽ thực sự sắp xếp theo khóa được cung cấp - nhưng sau đó nó cũng sẽ bao gồm bất kỳ bài đăng nào mà khóa meta đó được đặt, ngay cả khi giá trị không đáp ứng tiêu chí trong meta_query (ít nhất, đó là cách nó hoạt động với tôi trong thử nghiệm). Cách tốt hơn để làm điều này có thể là vượt qua một mảng dưới dạng paramby order, như được mô tả ở đây: core.trac.wordpress.org/ticket/17065#comment:14
MathSmath

1

Tôi đang sử dụng mã sau đây cho các bài đăng tùy chỉnh của mình được gọi events, để nhận tất cả các bài đăng trong Vòng lặp.

$evtLoop = new WP_Query(array('post_type' => 'events',
                              'posts_per_page' => 10,
                              'orderby' => 'meta_value', 
                              'meta_key' => '_events_meta',
                              'order'=>'DESC'));

Tôi nghĩ rằng bạn đang sử dụng mã của bạn một cách gần đúng theo cùng một cách. Tôi nghĩ rằng bạn đang thiếu meta_keytên của trường meta để sắp xếp. Có lẽ nó giúp nếu bạn thêm

'meta_key' => 'webinar_startDate',

đến mảng ngoài?


Tôi thấy bây giờ Tôi đã bối rối bởi tài liệu Wordpress nói rằng 'meta_key' và 'meta_value' đã bị khấu hao. Tôi cho rằng điều đó có nghĩa là tôi không thể sử dụng chúng, nhưng tôi đoán đó là sai lệch. Cảm ơn!
Jeff K.
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.