Hãy thử nó hoạt động hoàn hảo cho tôi những gì nó đang làm truy vấn lấy tất cả các bài đăng với một left jon
với comments
bảng để khi một bài đăng có nhận xét them =n nó cũng có comment_date
nếu không có nhận xét nào được đăng trên bài viết thì kết quả đặt nó sẽ là null
vì vậy tôi đã hợp nhất comment_date
với post_date
vì vậy bài đăng nào có ngày lớn hơn (cho comment_date hoặc post_date) nó sẽ đầu tiên và cứ tiếp tục như vậy
SELECT p.*,
(CASE WHEN c.comment_date IS NULL THEN p.`post_date` ELSE c.comment_date END) order_column
FROM `wp_posts` p
LEFT JOIN `wp_comments` c ON (p.ID = c.`comment_post_ID` ) WHERE p.post_type='post' AND p.post_status='publish'
GROUP BY p.ID
ORDER BY order_column DESC
Để hiển thị các bài đăng, trước tiên bạn phải nhận được kết quả bằng cách xác định biến toàn cục của WP cho tương tác cơ sở dữ liệu, tức là $wpdb
<?php
global $wpdb;
$results = $wpdb->get_results(" SELECT p.*,
(CASE WHEN c.comment_date IS NULL THEN p.`post_date` ELSE c.comment_date END) order_column
FROM `wp_posts` p
LEFT JOIN `wp_comments` c ON (p.ID = c.`comment_post_ID` ) WHERE p.post_type='post' AND p.post_status='publish'
GROUP BY p.ID
ORDER BY order_column DESC");
?>
HTML
<?php foreach($results as $result){
<h1><?php echo $result->post_title;?></h1>
<div> <?php echo $result->post_content;?> </div>
// and so on the fields of wp_posts
<?php } // loop end ?>
Hy vọng đó là những gì bạn đang tìm kiếm