sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo obtener la publicación comentada más reciente sobre la nueva publicación enviada en Wordpress?

Pruébalo, funciona perfecto para mí, qué está haciendo, consulta, obtén todas las publicaciones con un left jon con comments tabla, por lo que cuando una publicación tiene un comentario =n, también tiene el comment_date si no se publican comentarios en la publicación, en el conjunto de resultados será null así que fusioné el comment_date con post_date entonces, qué publicación tiene la mayor fecha (para comment_date o post_date) será la primera y así sucesivamente

SELECT p.*,
(CASE WHEN c.comment_date IS NULL THEN p.`post_date` ELSE c.comment_date END) order_column
 FROM `wp_posts` p
LEFT  JOIN `wp_comments` c  ON (p.ID = c.`comment_post_ID` ) WHERE p.post_type='post' AND p.post_status='publish'
GROUP BY p.ID
 ORDER BY order_column   DESC

Para mostrar las publicaciones, primero debe obtener los resultados definiendo la variable global de WP para la interacción de la base de datos, es decir, $wpdb

<?php
global $wpdb;
$results = $wpdb->get_results("    SELECT p.*,
    (CASE WHEN c.comment_date IS NULL THEN p.`post_date` ELSE c.comment_date END) order_column
     FROM `wp_posts` p
    LEFT  JOIN `wp_comments` c  ON (p.ID = c.`comment_post_ID` ) WHERE p.post_type='post' AND p.post_status='publish'
    GROUP BY p.ID
     ORDER BY order_column   DESC"); 
?>

HTML

<?php foreach($results as $result){

<h1><?php echo $result->post_title;?></h1>
<div> <?php echo $result->post_content;?> </div>
// and so on the fields of wp_posts
<?php } // loop end ?>

Espero que eso sea lo que estabas buscando