Como mostrar los artículos más comentados en WordPress sin usar plugins

Estos días he hecho algunas mejoras en el blog. A nivel de navegabilidad he introducido pestañas donde se pueden ver los posts más comentados y los últimos posts. Cómo me gusta mucho trastear con el código decidí no usar ningún plugin/widget e introducirlo directamente en el sidebar, y si así gano algo de velocidad al generar la página con PHP, pues mejor que mejor, que el hosting va muy caro y hay crisis económica mundial.

El código de este artículo está basado en el post «How To: Displaying Your Most Commented Posts» de WPHacks.

Abre el fichero functions.php de tu theme e introduce al final del todo la siguiente función.

function most_popular_posts($no_posts = 10, $before = '
  • ', $after = '
  • ', $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 . '' . $post_title . ' (' . $comment_count.')' . $after; } } else { $output .= $before . "None found" . $after; } echo $output; }

    Esta función es la que se va a encargar de armar una consulta a la base de datos y obtener los posts más comentados. Admite 4 parámetros:

    1. Número de posts que se van a mostrar.
    2. Código HTML mostrado antes del post.
    3. Código HTML mostrado después del post.
    4. Contraseña del post (por se quiere mostrar posts protegidos con contraseña).
    5. Antigüedad máxima del post (en días).

    Después, editamos el fichero sidebar.php de nuestro theme y, en el lugar en que queramos mostrar los artículos más comentados, introducimos algo como lo siguiente:

    Más comentado

      ', '', false, '100'); ?>

    Con este código se mostrarán, en una lista no numerada, enlaces a los 5 posts más comentados del blog en los 100 últimos días y que no estén protegidos por contraseña.

    Compartir:
    Abrir chat
    ¿Tienes alguna duda que podamos aclarar?