Hi. I've used your plugin for some time -- thank you!
The reason I write is I *think* I found a bug in your code. I could very well be mistaken, as I am by no means a WordPress expert.
At any rate, I was having a problem where the comments from the most recently added categories in my blog where not being displayed, even though I had the categories selected on the "Categories" configuration page. I troubleshooted the problem down to a block of code in get-recent-comments.php (starting line is 1121):
The original code:
if ($missing_post != NULL)
{
unset($comma_separated);
$comma_separated = implode(",", array_keys($missing_post));
if (empty($wpdb->term_relationships)) {
$query = "SELECT * from $wpdb->posts JOIN $wpdb->post2cat ON ID = post_id WHERE ID IN ($comma_separated);";
} else {
$query = "SELECT * from $wpdb->posts JOIN $wpdb->term_relationships ON ($wpdb->term_relationships.object_id=ID) WHERE ID IN ($comma_separated);";
}
// echo "$query<br>";
$posts = $wpdb->get_results($query);
foreach ($posts as $post) {
// echo "p: $post->ID ";
$post_cache[$post->ID] = $post;
if (empty($wpdb->term_relationships)) {
$cat_cache[$post->ID][$post->category_id] = 1;
} else {
$cat_cache[$post->ID][$post->term_taxonomy_id] = 1;
}
}
}
I think the problem was that the category id(s) of each post were being determined (incorrectly) by grabbing the term_taxonomy_ids from the above query. Unless I am mistaken (which is always a fair bet :-), in the terms_taxonomy table, when taxonomy="category", the term_id and not the term_taxonomy_id is the correct number to use for the category id.
However, rather than test my theory by changing the SQL, I refactored the code as follows:
if ($missing_post != NULL)
{
unset($comma_separated);
$comma_separated = implode(",", array_keys($missing_post));
// Some code refactoring. See get-recent-comments.org for original. --DR
$posts = get_posts('include=' . $comma_separated);
foreach ($posts as $p) {
$post_cache[$p->ID] = $p;
$cats = get_the_category($p->ID);
foreach ($cats as $c) {
$cat_cache[$p->ID][$c->cat_ID] = 1;
}
}
}
This way I didn't need to get my hands dirty with the any SQL. The selected categories are displaying recent comments and if I uncheck a category in the config interface, the comments stop showing up, as expected. I didn't test the reverse (skip selected categories), as I don't use that option.
I hope this helps and again, thanks for the plugin, it's come in very handy.