Como mostrar los posts mas comentados

Uno de los elementos mas interesantes en tu barra lateral puede ser mostrar aquellos posts que han sido mas comentados, los que provocaron mas debate, incluso discusión. No serán quizás tus mejores posts, pero si aquellos que llegaron a mas gente, los que provocaron la reacción de tus lectores, y tanto tu como tus visitantes podéis aprender de ello, y revisarlos.

Conseguir un widget que muestre tus posts mas comentados es realmente fácil y tienes 2 maneras de hacerlo, la simple y con la que aprendes. Como siempre veremos las dos.

1. El Modo Simple

Como puedes imaginar, el modo sencillo de conseguirlo es utilizar plugins. Yo personalmente recomiendo 2, que son estos:

  • Popularity Contest – Utiliza tanto comentarios como trackbacks para mostrar tus posts mas populares
  • AutoInfo – Muy completo, que muestra mucha mas información de tu blog

2. El Modo Didáctico

Siempre es el que recomendamos, no solo porque no cargas tu blog de plugins que requieren mas consumo de memoria sino porque además aprendes y mejoras tu cualidad como blogger completo.

Tienes que hacer solo 2 pasos. El primero es añadir este código al fichero ‘header.php‘ de tu plantilla, justo antes de la etiqueta </head>:

<?php function entradas_mas_comentadas($no_posts = 3, $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 . '<span class="removed_link" title="&#039; . $permalink . &#039;">' . $post_title . '</span> (' . $comment_count.')' . $after;
}
} else {
$output .= $before . "No hay nada" . $after;
}
echo $output;
} ?>

En este código puedes mostrar mas de 3 posts, digamos 5 por ejemplo. Para ello solo tienes que cambiar la parte $no_posts = 3 por el número de posts que desees mostrar.

Una vez guardado este código en el archivo ‘header.php‘  ahora solo hay que llamar a ese código desde donde quieres que se muestre, normalmente en la barra lateral. Abrimos el archivo ‘sidebar.php‘ de tu plantilla, y allí donde quieras que se vean tus posts mas comentados añades este código:

<?php entradas_mas_comentadas(); ?>

¿Ves como así también es fácil?

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(0 votos, promedio: 0)

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

AVISO: Esta publicación es de hace 3 años o más. Si es un código o un plugin podría no funcionar en las últimas versiones de WordPress, y si es una noticia podría estar ya obsoleta. Luego no digas que no te hemos avisado.

25 comentarios en “Como mostrar los posts mas comentados”

  1. Pingback: Bitacoras.com

  2. Hola que buen post, pero me surgio una pequeña consulta, en la forma didáctica como puedo usar el codigo en el header.php para mostrar los post más comentados por fecha, por ejemplo , los post más comentados de la semana o del mes?.

    Saludos

    Mauro

  3. Hola, me gusto mucho el post, en especial por el Codigo.

    Aunque me gustaria que se comentara un poco el codigo, no es por ponerme de exigente con su grandioso trabajo verdad, pero de esa manera se podria interpretar un poco mejor no cren.?
    mi humilde opinon sin ofensa alguna.
    Saludos y muchas gracias.

  4. Básicamente es una función que recibe estos parámetros:
    número de posts, etiqueta antes, etiqueta después, si tiene contraseña el post (show_pass_post) i duración.

    Hace una consulta del tipo: selecciona identificador (ID), titulo (POST_title) y número de comentarios que esten aprovados y publicados. opcionalmente que tengan password o no (show_pass_post) y nº de días (duración) desde hoy. Los agrupa por ID (esto lo hace para poder contar correctamente) y por último los ordena descendientemente (DESC de mayor a menor) por el número de comentarios y selecciona solo los necesarios (numero de posts).

    El resultado de esta consulta se pone en la variable post que será un array. Con el foreach recorremos el array y vamos creando los links que se irán concatenando en la variable output. Cualquier cambio de formato lo puedes hacer en la varibale output linea 16.

    Por último imprimimos el output que será el código que se mostrará cuando en el código llamemos a la función. Al poner posts_mas_comentados() significa que cogerá los valores por defecto, es decir 3 comentarios, tag antes li, tag despues /li, mostrar posts sin password y todos los posts de tu blog.

    Si quieres que salgan 5 posts de los ultimos 10 dias sería algo así la llamada.

    posts_mas_comentados(5,»,»,»,10);

    Espero haberlo explicado mas o menos. Gracias!

  5. Hola,
    Para que funcione el codigo le faltaría poner que es una función.
    O sea,
    <?php
    function posts_mas_comentado

    Gracias por el codigo es muy bueno.

  6. Lo acabo de probar en mi blog y sale correcto. Solo un detalle, en el primer código (el que va en el header.php) en la función falta poner al principio la palabra reserva function es que sino casca.

    Sería algo como function posts_mas_comentados

    Gracias, hacia tiempo que quería poner esto! No pensaba que fuese tan fácil.

  7. y si quiero que me aparezca en mi sidebar como un widget de texto? por si añado la llamada no aparece nada.
    Gracias

  8. A mi al principio me pasó lo mismo que no salía. Quizás era problema de la caché, prueba de borrarla.

    La llamada tal como la tengo ahora es así:

    [li id=»top-comments» class=»widget widget_archive»][h2 class=»widgettitle»]Top comentarios[/h2] [ul]
    [?
    posts_mas_comentados();
    ?]
    [/ul]

    Cambia los corchetes por menor y mayor.

    Supongo que donde pone widget_arhive le puedo poner otra cosa como widget_top, pero como me funcionó lo dejé así.

    Gracias!

  9. Una manera más limpia de usar este script, es meterlo dentro de function.php y luego invocar la función donde la necesitemos, así lo hice yo y funcionó perfectamente.

  10. Me gustaria que solo muestre los post mas comentados pero no de todo el blog sino de ciertas categorias que yo selleccione. Se puede hacer?

    Saludos

    1. Hola, ya encontraste la solución a dicho problema?, yo me encuentro en ese dilema, como hacer que se muestren los posts mas comentados de una categoría.. te agradecería si tuvieras la respuesta.,..

      gracias..

  11. Ahora mismo no se hacer lo que comentas Juani. Ya lo miraré más a fondo a ver. Por el momento no veo una tabla de categorías… tengo que analizar como relaciona una categoria con una entrada… alguien sabe algo ?

  12. Cristiam Diaz

    Tambien he quitado lo mismo que Isabel ?phpMyAdmin=xxxxxxxxxxxxxxxx . Al fin no entendi para que iba eso alli, alguien podría explicarme '? .. por lo demas todo funciona muy bien, estoy muy agradecido

  13. Bueno, me parece que eso se puede reemplazar por #comments y así al hacer click se dirija a los comentarios del post en cuestión. 😉

  14. Pingback: wp-popular.com » Blog Archive » posts mas comentados | Ayuda WordPress

  15. Hola, quisiera saber cómo puedo darle un poco de arreglo al CSS así como mostrar un Título ya que no puedo ponerlo como Widgets…

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Ir arriba Ir al contenido