Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment obtenir le message commenté le plus récent au-dessus du nouveau message soumis dans Wordpress ?

Essayez-le fonctionne parfaitement pour moi ce qu'il fait requête obtenir tous les messages avec un left jon avec comments table donc quand un message a un commentaire them=n il a aussi le comment_date si aucun commentaire n'a été posté sur le message, alors dans le jeu de résultats, il sera null j'ai donc fusionné le comment_date avec post_date donc quel message a la plus grande date (pour comment_date ou post_date) il sera le premier et ainsi de suite

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

Pour afficher les messages, vous devez d'abord obtenir les résultats en définissant la variable globale du WP pour l'interaction de la base de données, c'est-à-dire $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 ?>

J'espère que c'est ce que vous cherchiez