Mostrar los posts mas comentados sin usar un plugin
Ultimamente me he vuelto partidario de no usar plugins, por esta razón he estado buscando opciones alternativas al uso de plugins, la razón, creo que la más básica y sencilla es evitar la sobrecarga de peticiones al servidor, de esta manera agilizar la carga de mi blog.
Hoy gracias a Ayuda Wordpress, me he encontrado con esta excelente función que nos permite mostrar cuales han sido los post más comentados, este debe ser unos de los widgets imprecindibles en nuestra sidebar, de esta manera para los usuarios será fácil saber cual es el “boom” del momento en nuestro blog o cual es el post más interesante.
Yo le he hecho un par de arreglito básicos para mejorar el orden y evitar el error que inevitablemente se mostrará en en la función hecha por Fernando Tellado, lo primero es que he creado una pagina especial llamada postmascoment.php, que incluye el siguiente código:
<?php
function posts_mas_comentados($no_posts = 5, $before = '<li>', $after = '</li>', $show_pass_post = false, $duration='') {
global $wpdb;
$request = "SELECT ID, post_title, COUNT($wpdb->comments.comment_post_ID) AS 'comment_count' FROM $wpdb->posts, $wpdb->comments";
$request .= " WHERE comment_approved = '1' AND $wpdb->posts.ID=$wpdb->comments.comment_post_ID AND post_status = 'publish'";
if(!$show_pass_post) $request .= " AND post_password =''";
if($duration !="") {
$request .= " AND DATE_SUB(CURDATE(),INTERVAL ".$duration." DAY) <post_date ";
}
$request .= " GROUP BY $wpdb->comments.comment_post_ID ORDER BY comment_count DESC LIMIT $no_posts";
$posts = $wpdb->get_results($request);
$output = '';
if ($posts) {
foreach ($posts as $post) {
$post_title = stripslashes($post->post_title);
$comment_count = $post->comment_count;
$permalink = get_permalink($post->ID);
$output .= $before . '<a href="' . $permalink . '" title="' . $post_title.'">' . $post_title . '</a> (' . $comment_count.')' . $after;
}
} else {
$output .= $before . "No hay nada" . $after;
}
echo $output;
}
?>





