2010-10-03 61 views
0

我有获取最新评论以下查询:获取最新的评论记录和相应的后蛞蝓WordPress的

global $wpdb; 
    $sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type,comment_author_url, SUBSTRING(comment_content,1,30) AS com_excerpt FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID = $wpdb->posts.ID) WHERE comment_approved = '1' AND comment_type = '' AND post_password = '' ORDER BY comment_date_gmt DESC LIMIT 10"; 

    $comments = $wpdb->get_results($sql); 

我也希望得到这个职位为每个评论的名称(塞),无运行每个评论的查询。你可以建议修改上述查询来实现这一目标吗?更好的是,我可以使用内置的Wordpress功能来做到这一点吗?

基本上我需要:

$comments = array ('comment_object' => ... , 'post_name' => ...) 

回答

1

从我自己最近的评论代码小修改:

/** 
* @return object 
*/ 
function recent_comments_query($limit) 
{ 
    global $wpdb; 

    $sql = "SELECT DISTINCT ID, 
       post_title, 
       post_name, // <- post name 
       post_password, 
       comment_ID, 
       comment_post_ID, 
       comment_author AS author, 
       comment_date_gmt, 
       comment_approved, 
       comment_type, 
       comment_author_url AS url, 
      SUBSTRING(comment_content, 1, 200) 
       AS comment_content 
      FROM $wpdb->comments 
      LEFT OUTER JOIN $wpdb->posts 
       ON (
        $wpdb->comments.comment_post_ID = $wpdb->posts.ID 
       ) 
      WHERE comment_approved = '1' 
       AND comment_type = '' 
       AND post_password = '' 
      ORDER BY comment_date_gmt DESC 
      LIMIT $limit"; 

    return $wpdb->get_results($sql); 
} 

你会得到一个对象,具有$limit结果或NULL

+0

感谢您的回答。但是,在哪里为每个评论选择“帖子名称”(slu))? – 2010-10-03 20:15:48

+0

哎呀,我忘了线路。我更新了代码。 – fuxia 2010-10-04 03:32:08

+0

不幸的是,我已经试过,并没有工作 – 2010-10-04 06:13:24