试试吧,对我来说很好,它在做什么,查询,用left jon
具有comments
因此,当一篇文章有注释时,它也有comment_date
如果帖子上没有发表评论,那么在结果集中null
所以我合并了comment_date
具有post_date
因此,哪个帖子的日期更大(对于comment\\u date或post\\u date),它将首先发布,以此类推
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
为了显示帖子,您必须首先通过为数据库交互定义WP的全局变量来获得结果,即
$wpdb
<?php
global $wpdb;
$results = $wpdb->get_results(" SELECT p.ID,
(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 LIMIT 20");
?>
HTML
<?php
foreach ($results as $id) {
$post = &get_post( $id->ID );
setup_postdata($post); ?>
<p><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p>
<?php
} ?>
希望这就是你想要的