Reputation: 10087
I have the following query for getting the latest comments:
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);
I also want to get the name(slug) of the post for each comment, without running a query for each comment. Can you suggest a modification to the above query to achieve this? Better yet, can I do this using built-in Wordpress functions?
Basically I need:
$comments = array ( 'comment_object' => ... , 'post_name' => ... )
Upvotes: 0
Views: 530
Reputation: 63576
From my own Recent Comments code with minor edits:
/**
* @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);
}
You’ll get back an object with $limit
results or NULL
.
Upvotes: 1