sql >> データベース >  >> RDS >> Mysql

Wordpressで新しく送信された投稿の上に最新のコメント投稿を取得するにはどうすればよいですか?

    試してみてください私にとっては完璧に機能しますクエリはleft jonですべての投稿を取得します comments付き テーブルなので、投稿にコメントがある場合は、comment_dateもあります。 投稿にコメントが投稿されていない場合、結果セットではnullになります だから私はcomment_dateをマージしました post_dateを使用 したがって、どの投稿の日付が大きいか(comment_dateまたはpost_dateの場合)、最初になります

    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
    

    投稿を表示するには、最初にデータベースインタラクションのWPのグローバル変数($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 ?>
    

    それがあなたが探していたものであることを願っています




    1. データベーステストとは何ですか?それを実行する方法は?

    2. MySQLdbが実行する実際のクエリを出力しますか?

    3. Accessで合計行を作成する方法

    4. 別のコンピューターからXAMPPMySqlデータベースにアクセスする