【bbpress】トピックのコメント一覧を新着順に並び替える方法
こんにちは、ゾノ( @ozonosho )です。
今回の記事ではwordpressの掲示板プラグイン「bbpress」においてトピックのコメント一覧を新着順に並び替える方法をご紹介します。
bbpressの標準設定だとコメント一覧は古い順に並ぶようになっていて、並び順を変更する機能や設定は備わっていないんですよね。
そんなわけで、コメント一覧を新着順に並び替えたい方は今回紹介する方法を試してみてください。
bbpressでトピックのコメント一覧を新着順に並び替える方法
実装は下記の2段階でおこないます。
- functions.phpにて並び順変更の処理を追加する
- コメント投稿後のリダイレクト先を変更する
それぞれ見ていきましょう。
①functions.phpにて並び順変更の処理を追加する
コメント一覧の並び順を変更するには、function.phpに下記のような関数を用意してください。
//bbpress:コメントを新着順に変更 function rew_date_topic_order( $args= array() ) { $args['orderby']='date'; $args['order']='DESC'; return $args; } add_filter('bbp_has_replies_query','rew_date_topic_order');
これでトピックページのコメント一覧が新着順に変更されます。
②コメント投稿後のリダイレクト先を変更する
コメント一覧を新着順に変更したら、次にコメント投稿後のリダイレクト先を変更します。
たとえばコメント一覧が3ページに及ぶ場合、bbpressの元々の機能だとコメント投稿後はコメント一覧の3ページ目が表示されるトピックページに飛びます。コメントが古い順でしたら3ページ目に飛ぶことで自分が投稿したコメント(=最新のコメント)を確認できるのでそれで良いのですが、今回コメントを新着順に変更したので3ページ目に飛ばされてしまうと自分が投稿したコメントを確認できないんですよね。
実装方法は簡単で、プラグイン内の下記ファイルを編集します。
/wp-content/plugins/bbpress/includes/replies/functions.php
関数「bbp_new_reply_handler」においてコメント投稿の処理が記述されているので、この関数の最後らへんにあるリダイレクト先を変更します。
具体的には、444行目ぐらいにあるwp_safe_redirect( $reply_url )の直前に下記のソースを追記してください。
//コメントを新着順にしたのでトピックページにリダイレクトさせる $reply_url = get_permalink( $topic_id );
これでコメント投稿後に新着コメントが表示されるページへリダイレクトされます。
おわりに
以上、今回の記事ではwordpressの掲示板プラグイン「bbpress」においてトピックのコメント一覧を新着順に並び替える方法を紹介させていただきました。
当サイトではWordPressのカスタマイズ依頼を請け負っています。実現したい機能・要望がある方はぜひ下記ページよりご相談ください。