Tôi đã khắc phục sự cố trong vài ngày qua và tiếp tục đi theo vòng tròn. Thực sự có thể sử dụng một đôi mắt mới để giúp tôi trả lời câu hỏi này ...
Vì vậy, tôi đang làm việc với một trang web wordpress nơi các bài đăng có một vài trường tùy chỉnh phù hợp với truy vấn tôi cần chạy: "hết hạn sau" và "thứ tự sắp xếp của tôi". Khi tôi chạy query_posts của mình, tôi muốn kết quả là các bài đăng trong đó "bài đã hết hạn" KHÔNG "có" (phần này hoạt động trong mã của tôi). Tôi cũng muốn các kết quả được sắp xếp theo giá trị số DESC của "my-sort-order" (cũng hoạt động) VÀ nếu có một ràng buộc về "thứ tự sắp xếp của tôi" tôi muốn sắp xếp thứ cấp theo ngày với các bài đăng gần đây nhất Đầu tiên.
Sắp xếp thứ cấp theo ngày là nơi tôi gặp khó khăn.
Đây là mã tôi có ngay bây giờ:
<?php
$args = array(
'paged' => $paged,
'meta_query'=> array(
array(
'key'=>'post-expired',
'value'=> 'yes',
'compare' => '!='
)
),
'meta_key'=>'my-sort-order',
'orderby'=>'meta_value_num',
'order'=>'DESC'
);
$args = array_merge( $args , $wp_query->query );
query_posts( $args );
?>
Sử dụng mã ở trên, tôi lấy lại chính xác các bài đăng chưa hết hạn và chúng được sắp xếp theo thứ tự giảm dần theo thứ tự của tôi (tức là 100 hiển thị trước 99, v.v.). Nhưng nếu cả hai bài viết có cùng giá trị thứ tự sắp xếp thì sẽ có một số loại sắp xếp thứ cấp xảy ra mà tôi dường như không thể kiểm soát (và không thể hiểu được nó thực sự đang được sắp xếp trên đó).
Ý tưởng đầu tiên của tôi để giải quyết điều này là chỉ thêm các giá trị vào "thứ tự sắp xếp của tôi" nếu tôi muốn đặt một thứ tự sắp xếp cụ thể cho bài đăng đó. Tôi nghĩ rằng nếu giá trị cho trường này được để trống cho phần còn lại của bài viết, chúng sẽ chỉ được trả về theo thứ tự mặc định theo ngày DESC (sau các bài đăng có thứ tự sắp xếp đã đặt). Tuy nhiên, điều thực sự xảy ra là bất kỳ bài đăng nào không có bộ giá trị thứ tự sắp xếp đều KHÔNG được trả lại ...
Tiếp theo, tôi đã thử thêm nhiều giá trị trong trường thứ tự như thế này:
('orderby'=>'meta_value_num date')
Điều đó đã hoàn toàn thổi bay cả hai thứ tự sắp xếp mà tôi sắp thực hiện và trả lại các bài đăng một cách bất ngờ. Tôi có ấn tượng rằng nhiều giá trị thứ tự được cho phép, nhưng vì một số lý do, nó không hoạt động ở đây.
Tại thời điểm này, tôi không chắc làm thế nào để một trong những giải pháp tiềm năng này hoạt động. Có ai biết làm thế nào tôi có thể 1) Sắp xếp bài đăng theo trường "my-sort-order" trước không, sau đó có các bài đăng còn lại không có giá trị trong trường đó được trả về với sắp xếp ngày mặc định; hoặc 2) Tìm hiểu làm thế nào để kiểm soát thứ tự sắp xếp thứ cấp để bất kỳ bài đăng nào có ràng buộc về "thứ tự sắp xếp của tôi" sẽ được sắp xếp theo ngày (mới nhất trước)?