Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

Ordenar los posts por los ultimos comentarios escritos en ellos

Estas en el tema de Ordenar los posts por los ultimos comentarios escritos en ellos en el foro de WordPress en Foros del Web. A ver si soy capaz de explicarme para que se entienda... Estoy tratando de realizar a mano, sin plugins (más que nada porque la mayoría ...
  #1 (permalink)  
Antiguo 13/05/2013, 14:04
 
Fecha de Ingreso: abril-2011
Mensajes: 72
Antigüedad: 13 años, 7 meses
Puntos: 0
Pregunta Ordenar los posts por los ultimos comentarios escritos en ellos

A ver si soy capaz de explicarme para que se entienda...
Estoy tratando de realizar a mano, sin plugins (más que nada porque la mayoría no permite filtrar el post_type), una lista de los "Últimos posts comentados" a través de consultas a la $wpdb.
La consulta es la siguiente:

Código PHP:
<?php 
$sql 
"SELECT DISTINCT ID, post_title, post_type, comment_ID, comment_post_ID, comment_author, comment_date, comment_approved, comment_type,comment_author_url, 
SUBSTRING(comment_content,1,50) AS com_excerpt FROM $wpdb->commentsLEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID = $wpdb->posts.ID)
WHERE  comment_type = '' AND post_type = 'post'  
GROUP BY comment_post_ID  
ORDER BY comment_date LIMIT 10"
?>
Eso me devuelve correctamente los resultados, que luego proceso con el siguiente foreach:

Código PHP:
<?php $comments $wpdb->get_results($sql);
foreach (
$comments as $comment) {
$frase strip_tags($comment->comment_ID);
 
$tema strip_tags($comment->comment_post_ID);
 
$ruta get_permalink($tema);
 
$excerpt get_the_title($tema);
$tiempo strip_tags($comment->comment_date);
?>
Lo cual también los procesa bien aparentemente.

A continuación viene el html para mostrar los resultados, que está bien, y luego el final del foreach.

El problema es que pretendo algo como esto:

Código PHP:
<?php $comrel human_time_diff(get_comment_time('U'), current_time('timestamp'));
Para mostrar cuando se ha escrito el último comentario publicado en el post.
Sin embargo aunque parece que funciona, sólo me lo devuelve relativo al primer comentario realizado en el post, es decir, que si despues de tres días escribes en un post que ya lleva unos días abierto, no lo refleja, y los resultados no se ordenan en base a ese nuevo orden.
Si el post lleva varios días abierto y se escribe sobre él, mi intención es que aparezca el primero de la lista, pero permanecen ordenados por el primer comentario realizado en él y no entiendo el por qué.

Quizás es un error en la consulta por el ORDER BY, pero no alcanzo a ver donde está el problema, o si por el contrario pudiese filtrar primero el array de resultados y por tanto hacer foreach al array filtrado tampoco sería un problema, pero no se me ocurre cómo...

Si alguien puede ayudarme se lo agradezco mucho. De todas maneras gracias por haber leído mi consulta.

Muchas gracias de antemano a todos.
  #2 (permalink)  
Antiguo 14/05/2013, 11:08
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 13 años, 2 meses
Puntos: 297
Respuesta: Ordenar los posts por los ultimos comentarios escritos en ellos

¿En realidad que quieres, ordenar los post o los comentarios? Porque en tu comentario entiendo las dos cosas.
__________________
Freelance Developer — www.rubenmartin.me PHP, SQL, Wordpress, Prestashop, Codeigniter, Laravel
RegaloConsolas — www.regaloconsolas.com Sorteo juegos, consolas y accesorios
  #3 (permalink)  
Antiguo 14/05/2013, 11:11
 
Fecha de Ingreso: abril-2011
Mensajes: 72
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Ordenar los posts por los ultimos comentarios escritos en ellos

Los posts, pero en base al último comentario escrito dentro de ellos. No sé si es posible. Gracias por la molestia de leerlo.
  #4 (permalink)  
Antiguo 14/05/2013, 12:06
Avatar de jtsanchez  
Fecha de Ingreso: mayo-2006
Ubicación: Tlaxcala, Mexico
Mensajes: 45
Antigüedad: 18 años, 5 meses
Puntos: 10
Respuesta: Ordenar los posts por los ultimos comentarios escritos en ellos

Cambia tu consulta por esto:

Código PHP:
Ver original
  1. ORDER BY comment_date DESC

La referencia es esta: http://dev.mysql.com/doc/refman/5.0/es/sorting-rows.html
__________________
Programando en Django desde mayo de 2013...
  #5 (permalink)  
Antiguo 14/05/2013, 12:11
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 13 años, 2 meses
Puntos: 297
Respuesta: Ordenar los posts por los ultimos comentarios escritos en ellos

Yo usaría el objeto $wpdb con el método get_col(), y con la siguiente consulta:

Código SQL:
Ver original
  1. SELECT DISTINCT comment_post_ID FROM wp_comments WHERE comment_approved = TRUE ORDER BY comment_date DESC

De este modo tendrás un array unidimensional con los ID de los post ordenador por los últimos comentarios.

Después te quedará recorrer el Array y preguntarle a Wordpress por cada post para recuperar la información del mismo.

PD: Recuerda ponerle un LIMIT al SQL.
__________________
Freelance Developer — www.rubenmartin.me PHP, SQL, Wordpress, Prestashop, Codeigniter, Laravel
RegaloConsolas — www.regaloconsolas.com Sorteo juegos, consolas y accesorios
  #6 (permalink)  
Antiguo 15/05/2013, 01:40
 
Fecha de Ingreso: abril-2011
Mensajes: 72
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Ordenar los posts por los ultimos comentarios escritos en ellos

Muchas gracias haspdk, voy a probarlo así a ver si avanzo más por esa línea. Muchas gracias por darme una alternativa por la que seguir investigando.
  #7 (permalink)  
Antiguo 15/05/2013, 01:41
 
Fecha de Ingreso: abril-2011
Mensajes: 72
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Ordenar los posts por los ultimos comentarios escritos en ellos

@jtsanchez , si lees la consulta al principio verás que ese ORDER BY es el que estaba utilizando. Gracias de todas maneras.
  #8 (permalink)  
Antiguo 15/05/2013, 07:55
Avatar de jtsanchez  
Fecha de Ingreso: mayo-2006
Ubicación: Tlaxcala, Mexico
Mensajes: 45
Antigüedad: 18 años, 5 meses
Puntos: 10
Respuesta: Ordenar los posts por los ultimos comentarios escritos en ellos

Cita:
Iniciado por adriantht Ver Mensaje
@jtsanchez , si lees la consulta al principio verás que ese ORDER BY es el que estaba utilizando. Gracias de todas maneras.
Estoy seguro que tienes razón, mi error es que no te informé el uso de la orden DESC que hace que la consulta se ordene de forma descendente, en este caso, aparecería primero el comentario más reciente. Me disculpo por ello.
__________________
Programando en Django desde mayo de 2013...
  #9 (permalink)  
Antiguo 15/05/2013, 15:29
 
Fecha de Ingreso: abril-2011
Mensajes: 72
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Ordenar los posts por los ultimos comentarios escritos en ellos

Lo siento yo entonces, probaré ambas formas, muchas gracias por la ayuda.

Etiquetas: comentarios, comments
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:18.