Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/05/2013, 14:04
adriantht
 
Fecha de Ingreso: abril-2011
Mensajes: 72
Antigüedad: 13 años
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.