Probeer het eens werkt perfect voor mij wat het doet vraag alle berichten op met een left jon
met comments
tabel, dus als een bericht commentaar them=n heeft, heeft het ook de comment_date
als er geen reacties op het bericht zijn geplaatst, is het in de resultatenset null
dus ik heb de comment_date
. samengevoegd met post_date
dus welk bericht de hoogste datum heeft (voor comment_date of post_date) zal het eerst zijn enzovoort
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
Voor het weergeven van de berichten moet u eerst de resultaten krijgen door de globale variabele van de WP te definiëren voor de database-interactie, d.w.z. $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 ?>
Ik hoop dat dat is wat je zocht