sql >> Databasteknik >  >> RDS >> Mysql

Hur får man det senaste kommenterade inlägget ovanför nytt inskickat inlägg i Wordpress?

Ge det ett försök fungerar perfekt för mig vad det gör fråga få alla inlägg med en left jon med comments tabell så när ett inlägg har kommentar them=n har det också comment_date om det inte skrivs några kommentarer på inlägget blir det i resultatuppsättningen null så jag har slagit ihop comment_date med post_date så vilket inlägg som har det största datumet (för comment_date eller post_date) kommer det först och så vidare

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

För att visa inläggen måste du först få resultaten genom att definiera WP:s globala variabel för databasinteraktionen, dvs $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 ?>

Hoppas det var det du letade efter




  1. PHP/mysql:Rangordna användare efter klick

  2. Android-setPeriodic för JobScheduler fungerar inte

  3. Mysql union fråga dubbletter rader

  4. Hur man skickar data från en aktivitet till en Java-klass