最新のコメントの日時順に記事をソートする

WordPressで掲示板的なコーナーをつくっていて、記事の投稿日やコメント数でソートすることはできたのですが、「最新のコメントが新しい順に表示」というソートができませんでした。

某巨大掲示板でいうと

記事=スレ
コメント=レス

ということをやりたかったのです。

SQL文を書けば汎用的に使えるものができるのかもしれませんが、僕には荷が重いので「最新のコメント投稿日時」をカスタムフィールドに持たせることにしました。
それが以下の文になります。functions.phpに記述します。

出力する際は以下のようにquery_postsにmeta_keyを加えます。

ただ、このままだと新しいスレ(レスが0のスレ)が「last_comment_post」というカスタムフィールドが存在しないため、対象となりません。

wp_insert_postでスレを立てる場合はその直後にupdate_post_metaでlast_comment_postというカスタムフィールドを生成する必要があります。

もしくはダッシュボードからスレを立てる場合(普通の投稿と同じ)は、content_save_pre、title_save_pre などの記事投稿時に実行されるフィルターフックでupdate_post_metaを実行します。

記事やコメントが投稿されたタイミングで更新日を取得するので、過去のコメントには適用されません。汎用性はあまりないかもしれませんので、いい手があればコメントなどいただけると嬉しいです。

AD

Share

Commentsコメント

メールアドレスは公開されません。コメントは必ずご入力ください。

HTMLタグは使用できません。ソースコードを書き込みたい場合はCodetterGistCodePenなどのご利用が便利です。

コメントはまだありません。