wordpressで掲示板をつかいたいらしい。もとはXOOPSサイトからの移行である。その当時は、掲示板があったし、プラグインで簡単に掲示板を準備できた。wordpressでもプラグインで掲示板ができるようだ。
でも、もういいかな。移行元もほとんど使われてない。管理者が書き込んでるぐらい2年前くらいが最後の投稿。つかってないんだよ。余計なプラグインいれたくもない。
で、wordpressのカテゴリで掲示板にして、話題を投稿にして、コメントのところで、ツリー形式にして掲示板にした。ここで問題が投稿の順番、コメントの日時が投稿のソートに影響しないので、昔の投稿が埋もれてしまう。これはいまいちとおもった。コメントが入った日時が新しいものを新着とするみたいなソートがほしかった。
あった。偉大な先人に感謝
WP_Queryのソースコードを読んでみると、「posts_orderby」にadd_filterすればいけそう。
function group_forum_posts_orderby($orderby, $query) { if (empty($query->query['orderby'])) { return $orderby; } if ($query->query['orderby'] != 'active') { return $orderby; } global $wpdb; // Latest comment date $sql = []; $sql[] = "("; $sql[] = "SELECT comment_date"; $sql[] = " FROM {$wpdb->comments}"; $sql[] = " WHERE comment_post_ID = {$wpdb->posts}.ID"; $sql[] = " And comment_approved = 1"; $sql[] = " ORDER By comment_date DESC"; $sql[] = " LIMIT 1"; $sql[] = ")"; return "COALESCE(" . implode("", $sql) . ", {$wpdb->posts}.post_modified) DESC"; } add_filter('posts_orderby', 'group_forum_posts_orderby', 10, 2);
呼び出すときはこんな感じ。
new WP_Query([ 'orderby' => 'active', // Custom hooks in hooks.php ])
応用すれば並び替え自由自在。
【WordPress】投稿一覧をコメントの日付を含めて最新のもので並び替える
「active」という名前でなくてもいい。
「order」は無視。
postmetaだけで並び替えるならhookせずにできる。掲示板
晴れ。38.2℃。
2023年8月31日(木曜日)

定点観測。河北町庁舎から晴れ
関連キーワード
関連記事
令和5年8月31日
- 平成35年8月31日
- 昭和98年8月31日
- 旧7月16日
- 葉月
今日は何の日
- そばの日
- 満月
明日のことは明日案じよ
あすのことはあすあんじよ
取り越し苦労はするものではない。今日の苦労だけでたくさんではないか、明日は明日で思案すればよいというたとえ。
引用元
四季風呂暦8月
桃湯:
桃が出まわる季節。桃は果実が食用、葉は薬用に使える植物。約500gの桃の葉をよく洗い湯舟に入れる。これは乳児の湯浴みにも使える他、軽い皮膚疾患の治療にもなる。
コメント