This is a quick and dirty most comment post plugin. It is what i use on my site to drive the sidebar widget. I wrote this as i wanted something really simple. It generates a <ul> element with four styles that you can adjust from your style.css in your theme folder. i am working on a settings page and once that is complete, i will release it on wordpress.org the classes are set on the <li>s: .hot .less-hot .even-less-hot .least-hot the class on the <ul> is: .most-commented here is the example css that i use:
.most-commented { margin: 0; padding: 0; list-style-type: none; }
.most-commented li a { display: block }
.hot, .less-hot, .even-less-hot, .least-hot { padding: 8px 5px 8px 5px; color: #FFFFFF; text-align: left; }
.hot { background: #D7331E; margin-top: 10px; border-bottom: #801f12 1px solid; }
.less-hot { background: #d7681e; border-bottom: #803e12 1px solid; }
.even-less-hot { background: #d7981e; border-bottom: #805b12 1px solid; }
.least-hot { background: #d7c81e; border-bottom: #807612 1px solid; }
the math used to calculate the popularity of the post is set in the function crcp_display_most_comment_posts(); i chose 10%, 30%, 60% for the thresholds. feel free to change them as you see fit you can also adjust the LIMIT part of the sql query in the function crcp_get_most_commented_posts(); in order to adjust how many you want to show in your sidebar
the last piece is to place <?php crcp_display_most_commented_posts(); ?> in your sidebar to activate it here is the plugin
<?php
/*
Plugin Name: Most Commented Posts
Plugin URI: http://www.matthewaprice.com
Description: Drives Most Commented Posts
Version: 0.5
Author: Matthew Price
Author URI: http://www.matthewaprice.com
License: GPL2
*/
function crcp_get_most_commented_posts() {
global $wpdb;
$comments = $wpdb->get_results( " SELECT COUNT(comment_post_ID) as count, comment_post_ID FROM " . $wpdb->prefix . "comments GROUP BY comment_post_ID ORDER BY count DESC LIMIT 4 " );
return $comments;
}
function crcp_display_most_commented_posts() {
$top_count = crcp_get_most_commented_post_count();
$comments = crcp_get_most_commented_posts();
$ten_percent = $comments[0]->count * 0.10;
$thirty_percent = $comments[0]->count * 0.30;
$sixty_percent = $comments[0]->count * 0.60;
echo "<ul class="most-commented">";
foreach ($comments as $comment) {
$title_class = '';
if ($comment->count >= $sixty_percent) { $title_class = "hot"; }
elseif ( ($comment->count <= $sixty_percent) && ($comment->count >= $thirty_percent) ) { $title_class = "less-hot"; }
elseif ( ($comment->count < $thirty_percent) && ($comment->count >= $ten_percent) ) { $title_class = "even-less-hot"; }
elseif ($comment->count < $ten_percent) { $title_class = "least-hot"; }
$comment_post_id = $comment->comment_post_ID;
query_posts("p=$comment_post_id");
if ( have_posts() ) : while ( have_posts() ) : the_post();
$post_title = get_the_title();
$permalink = get_permalink($comment_post_id);
echo "<li class="" . $title_class . ""><a href="" . $permalink . "">" . $post_title . "</a></li>";
endwhile;
endif;
wp_reset_query();
}
echo "</ul>";
}
?>