bbPressのカスタマイズをいろいろやったのでまとめておきます

bbPress

bbPressはWordPressにフォーラム機能(掲示板)を追加するプラグインです。

記事執筆時点でのアクティブインストール数は30万以上となっていて人気のプラグインであることが分かります。

プラグイン作者にはWordPress創始者の一人であるMattさんも入ってます。

2018年1月時点では開発も継続的に行われているようです。

そんなbbPressをカスタマイズする機会があったので忘備録としてコードサンプルを残しておきたいと思います。

カスタマイズ要件とコードサンプル

トピック&回答の追加・編集にフックする

例えば、「トピックや回答にあらかじめ設定しておいたキーワードが入力されていたらメールする」といった時に検知することができます。

bbPressにその名の通りのフックポイントがあるのでフックすればOKです。

https://gist.github.com/mt8/7b1cab105d9a29f2ec931d798f32712e#file-hook_to_topic_and_reply-php

キーマスターにメールする

トピックや回答などの任意のタイミングでキーマスターにメールを飛ばしたいときなどに使用する関数です。キーマスターが複数いる場合は、ループで回してあげればよいでしょう。

https://gist.github.com/mt8/7b1cab105d9a29f2ec931d798f32712e#file-mail_to_keymaster-php

トピックの回答フォームに入力項目を追加する

ここでは、回答時に「この回答を会員専用にする」というチェックボックスを追加するサンプルを紹介します。

「今後の返信をメールで通知」の後に、「この回答を会員限定にする」というチェックボックスを追加しています。

さらにトピックの作成・編集時にチェック状況を回答のメタ情報として保存します。

※チェックの状態は保存しますが、会員しか読めない制御は別途実装が必要です。

https://gist.github.com/mt8/7b1cab105d9a29f2ec931d798f32712e#file-add_inputs_for_reply-php

ログインしている状態でログインページにアクセスした時に任意のページにリダイレクトする

bbPressではフォーラムユーザーをWordPressユーザーとして管理しています。

ログインはWordPressログインページではなく、固定ページ・投稿に[bbp-login]というショートコードを設置することでログインフォームを表示させることができます。

ただ、このログインページはログインした状態でもアクセスでき、その場合は「既にログイン済みです」というメッセージが表示されるだけとなります。

サンプルでは、ログインページに次の機能を追加しています。

  • 未ログインの場合は通常通りログインフォーム表示
  • ログイン済の場合は、アクセス元もしくはトップページにリダイレクトする

例えば、「特定のコンテンツは会員限定にしたい」といった場合。

そのページにアクセスされた時にログインページに、「?re=エンコードされたURL」としてあげればログイン後に元のリダイレクトさせることができます。

https://gist.github.com/mt8/7b1cab105d9a29f2ec931d798f32712e#file-customize_login_form-php

他にも追加していきます。


mt8ではbbPressのカスタマイズも行なっておりますので、上記以外にもカスタマイズのご依頼があれば問い合わせフォームよりご連絡をお願いします。