Sau khi mỏi mòn tìm kiếm trên Google, tôi đã tìm thấy giải pháp để sắp xếp bài viết trong WordPress bởi Custom Fields.
Bài viết được dịch từ Order Posts in WordPress by Multiple Custom Fields
Đầu tiên, xác định những meta_key mà bạn muốn sử dụng để sắp xếp.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$wp_query = new WP_Query(array( 'meta_key' => 'meta_1', 'meta_query' => array( array( 'key' => 'meta_1' ), array( 'key' => 'meta_2' ), array( 'key' => 'meta_3' ) ) )); |
Thứ hai, viết thêm một function trong file functions.php để trả về chuỗi ORDER BY mong muốn.
1 2 3 |
function customorderby($orderby) { return 'mt1.meta_value, mt2.meta_value, mt3.meta_value ASC'; } |
Cuối cùng là apply function vào trong WP_Query.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
add_filter('posts_orderby','customorderby'); $wp_query = new WP_Query(array( 'post_type' => 'shop', 'meta_key' => 'meta_1', 'meta_query' => array( array( 'key' => 'meta_1', ), array( 'key' => 'meta_2', ), array( 'key' => 'meta_3', ) ) )); remove_filter('posts_orderby','customorderby'); |