Làm việc trên một trang web có rất nhiều bài đăng, tôi cần hiển thị 3 bài đăng từ một danh mục cụ thể, nhưng tất cả chúng đều phải từ 10 bài mới nhất được xuất bản trên trang. Tôi có thể lấy 3 bài đăng hoàn toàn ngẫu nhiên (có xu hướng kéo các bài đăng rất cũ) hoặc lấy 10 bài đăng (nhưng tôi không biết cách ngẫu nhiên thứ tự và chỉ hiển thị 3).
Cho đến nay, tôi có truy vấn này:
$args = array(
'post_type' => 'post',
'category_name' => 'mycategory',
'posts_per_page' => 10,
'orderby' => 'date',
'order' => 'DESC',
'meta_key' => '_thumbnail_id',
'no_found_rows' => 'true'
);
$query = new WP_Query( $args );
cùng với nỗ lực này để có được 3 bài đăng ngẫu nhiên từ 10 câu hỏi:
$randomPosts = shuffle( $query );
$randomPosts = array_slice( $randomPosts, 0, 3 );
Nhưng coi kết quả là một mảng không hoạt động, vì nó thực sự là một đối tượng.
Suy nghĩ duy nhất khác của tôi là sử dụng 'posts_per_page' = 3với 'orderby' => 'rand'để lấy 3 bài viết ngẫu nhiên và thêm một 'date_query'hạn chế nó đến 6 tháng qua. Điều đó sẽ gần, nhưng tốt nhất là hạn chế truy vấn trong 10 bài đăng gần đây nhất (tất cả chúng có thể được xuất bản 3 ngày trước hoặc 5 tháng trước, chúng được xuất bản cùng nhau trong các giai đoạn không đồng đều).
Đâu là cách tiếp cận lí tưởng nhất?
Truy vấn 10 bài đăng mới nhất như tôi đang làm, sau đó chuyển đổi đối tượng thành một mảng, xáo trộn và cắt lát và chuyển đổi nó trở lại một đối tượng hoặc có cách nào đơn giản hơn, hiệu quả hơn để thực hiện mục tiêu?