Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie erhalte ich den neuesten kommentierten Beitrag über dem neu eingereichten Beitrag in Wordpress?

Probieren Sie es aus, funktioniert perfekt für mich, was es tut, fragen Sie alle Beiträge mit einem left jon ab mit comments also wenn ein Beitrag comment them=n hat, hat er auch das comment_date Wenn keine Kommentare zu dem Beitrag gepostet wurden, ist die Ergebnismenge null also habe ich das comment_date zusammengeführt mit post_date Welcher Beitrag also das größere Datum hat (für comment_date oder post_date), wird zuerst angezeigt und so weiter

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

Um die Beiträge anzuzeigen, müssen Sie zuerst die Ergebnisse abrufen, indem Sie die globale Variable des WP für die Datenbankinteraktion definieren, z. B. $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 ?>

Ich hoffe, das ist, wonach Sie gesucht haben