创建一个“论坛”--显示最后一篇文章或最后一篇评论文章

时间:2014-12-19 作者:bysanchy

感谢阅读!

我创建一个论坛只是使用类别和帖子。我想(像大多数论坛一样)在类别名称旁边显示最近一次发表评论的帖子或最近创建的帖子(更新)。

我找到了this related question. 然而,我不太擅长阅读SQL查询,我不确定这些查询是否如我所期望的那样工作。

select wp_posts.*,
coalesce(
    (
        select max(comment_date)
        from $wpdb->comments wpc
        where wpc.comment_post_id = wp_posts.id
    ),
    wp_posts.post_date
) as mcomment_date
from $wpdb->posts wp_posts
where post_type = \'post\'
and post_status = \'publish\' 
order by mcomment_date desc
limit 10
有没有其他方法可以实现这一目标?

提前谢谢。

1 个回复
SO网友:bonger

可以将标准分类联接添加到查询中:

global $wpdb;
$cat_id = 79; // Whatever.
$sql = "
    select wp_posts.*,
    coalesce(
        (
            select max(comment_date)
            from $wpdb->comments wpc
            where wpc.comment_post_id = wp_posts.id
        ),
        wp_posts.post_date
    ) as mcomment_date
    from $wpdb->posts wp_posts
    JOIN $wpdb->term_relationships AS tr ON wp_posts.ID = tr.object_id
    JOIN $wpdb->term_taxonomy AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
    where post_type = \'post\'
    and post_status = \'publish\'
    AND tt.term_id = $cat_id AND tt.taxonomy = \'category\'
    order by mcomment_date desc
    limit 1
";
$ret = $wpdb->get_results($sql);

结束

相关推荐

从MySQL表中获取数据..令人困惑

我一直在想方设法解决这个问题。I\'v创建了一个名为cp_country. 现在Mysql中的每条记录都有一个cp_country. 问题是我不明白Wordpress是如何将数据索引到MySql的。例如,看这里通常,我会习惯于获取行,如SELECT * FROM table WHERE cp_country=\'United Kingdom\' 但正如您所看到的,结果不是一行,属性是按每行列出的,并由一个post id连接。如何获得结果cp_country=\'United Kingdom\'?例如,一组