我有这样的功能:
$ids = $wpdb->get_col("SELECT DISTINCT comment_post_ID FROM $wpdb->comments ORDER BY comment_date DESC LIMIT 0 , 30"); foreach ($ids as $id) { $post = &get_post( $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 } ?>
这显示了latest commented posts
在列表中,这是罚款。 我想要做的就是给予优先考虑这一个,并用“结合起来get newest post list
”。 所以我们可以说我今天在一则名为后的Hello World,有人昨天提交别人后......比我想最近的评论后高于这个新的职位。 问题是,在我的代码片段,有什么,说来获得最新的帖子。 我怎样才能将它们组合起来? 因此,如何最近的评论文章和最新帖子相互结合? 这甚至可能吗?
试试看完美的作品对我来说它是做什么的查询得到的所有帖子用left jon
与comments
表,这样当一个帖子有评论他们= N它还具有comment_date
如果在后公布,然后在结果集中没有评论这将是null
,所以我已经合并的comment_date
与post_date
所以其后期具有较大日期(COMMENT_DATE或POST_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.*,
(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 ?>
希望这是你要找的
文章来源: How to get most recent commented post above new submitted post in Wordpress?