試してみてください私にとっては完璧に機能しますクエリは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 ?>
それがあなたが探していたものであることを願っています