mysql - 如何在 Wordpress 中获取新提交帖子上方的最新评论帖子?

标签 mysql wordpress comments posts

我有这个功能:

$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
}
?>

在列表中显示最新评论的帖子,这很好。我想要做的是优先考虑这个,并将它与“get newest post list”结合起来。因此,假设我今天对一篇名为 Hello World 的帖子发表了评论,而昨天有人提交了一篇帖子……我想在这篇新帖子上方获得最近评论的帖子。问题是在我的代码片段中,没有任何内容可以获取最新的帖子。我如何组合它们? 那么如何将最近评论的帖子和最新的帖子相互结合起来呢?这有可能吗?

最佳答案

试一试对我来说很完美它在做什么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 ?>

希望这就是你要找的

关于mysql - 如何在 Wordpress 中获取新提交帖子上方的最新评论帖子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17501490/

相关文章:

javascript - WordPress 上的病毒 wp-tmp.php 可以做什么

C# 隐藏和取消隐藏评论

php mysql查询条件oop

mysql - 按 X 天的范围分组

.htaccess - 为 1 个域下的 2 个 wordpress 安装构建站点地图

c - 为什么 flex/bison 中的多行注释如此含糊其辞?

php - 如何从 PHP 中的 XML 文档中检索注释

python - 无法使用pythons mysqldb执行mysql插入

MySQL 独立的用户用于读、写和管理

wordpress - 如何在Wordpress中通过父页面标题获取页面的所有子页面?