如何获得最新评论后在上面的WordPress新提交的文章?(How to get most rece

2019-10-18 08:30发布

我有这样的功能:

 $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,有人昨天提交别人后......比我想最近的评论后高于这个新的职位。 问题是,在我的代码片段,有什么,说来获得最新的帖子。 我怎样才能它们组合起来? 因此,如何最近的评论文章和最新帖子相互结合? 这甚至可能吗?

Answer 1:

试试看完美的作品对我来说它是做什么的查询得到的所有帖子用left joncomments表,这样当一个帖子有评论他们= N它还具有comment_date如果在后公布,然后在结果集中没有评论这将是null ,所以我已经合并的comment_datepost_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?