[WordPress]各投稿タイプ最新1件を取得する

More than 1 year has passed since last update.

[WordPress]各カテゴリー最新1件の投稿を取得する

って記事を書いているときに

そういえば昔投稿タイプで似たようなことやったな〜

って思い出してまだQiitaに残してなかったので残す。

gistには残していたけど

最新の投稿のつけあわせをpost_dateでやってたんでIDでするようにした。

通常運営ならpost_dateで問題ないと思うけども

処理で一度に大量の投稿つくったりコピーしたりするとあれなんで。

ちなみに元々参考にしていた記事は

Show latest Posts from each Post Type

$query = <<<SQL

SELECT tmp.ID, tmp.post_type, tmp.post_date FROM
(
SELECT ID, post_type, max(post_date) AS pd FROM wp_posts
WHERE post_status = %s
AND post_type IN (%s, %s)
GROUP BY post_type
) AS post
INNER JOIN wp_posts AS tmp
ON tmp.post_type = post.post_type
AND tmp.ID = post.ID
ORDER BY post.pd DESC
SQL;

$ret = $wpdb->get_results($wpdb->prepare($query, ['publish', 'post', 'any']), ARRAY_A);

これで投稿IDと投稿タイプと公開日が取れるので

あとはよろしくやってほしい。