【メモ】bbpressでメールやサイトの入力欄を削除

この記事は、本サイトにbbpressを設置した際に行ったカスタマイズ内容のメモです。

bbPress

カスタマイズ経緯

本サイトでは、不特定多数の読者から会員登録なしで気軽に質問をしてもらうことにしました。
メールアドレスやサイト名の入力欄は、質問投稿の敷居を高くすることが予想されます。
そのようなことから、メールアドレスやサイト名の入力欄を削除することにしました。

bbpressのメールアドレス・サイト名入力欄【bbpressのメールアドレス・サイト名入力欄】

カスタマイズ内容

今回は、次の記事を参考にさせて頂きました。
ありがとうございます!
https://ozonosho.net/715/

カスタマイズ前の準備

次の記事の方法で、カスタマイズの準備を行います。

カスタマイズ用コード

準備した自作プラグインに次のコードを貼りつけます。

  • add_filter( 'bbp_filter_anonymous_post_data','my_bbp_filter_anonymous_post_data' ,11, 2 );
  • add_filter( 'bbp_pre_anonymous_post_author_name','my_bbp_pre_anonymous_post_author_name' );
  • add_filter( 'bbp_pre_anonymous_post_author_email','my_bbp_pre_anonymous_post_author_email' );
  • function my_bbp_filter_anonymous_post_data( $retval, $r ){
  • if( 'nobody' === $r['bbp_anonymous_name'] && 'nobody@example.com' === $r['bbp_anonymous_email'] ){
  • $retval = array();
  • $retval['bbp_anonymous_flood_check'] = '1';
  • }
  • return $retval;
  • }
  • function my_bbp_pre_anonymous_post_author_name( $name ){
  • remove_filter( current_filter(), __FUNCTION__ );
  • return empty( $name ) ? 'nobody' : $name;
  • }
  • function my_bbp_pre_anonymous_post_author_email( $email ){
  • remove_filter( current_filter(), __FUNCTION__ );
  • return empty( $email ) ? 'nobody@example.com' : $email;
  • }
  • add_action( 'bbp_enqueue_scripts', 'my_bbp_enqueue_scripts',100);
  • function my_bbp_enqueue_scripts(){
  • switch(get_post_type()){
  • case "topic":
  • case "forum":
  • wp_add_inline_style( 'bbp-default' , my_bbp_style() );
  • return;
  • }
  • }
  • function my_bbp_style(){
  • $output=<<< EO
  • <style type="text/css">
  • #bbp_anonymous_email{display:none;}
  • label[for="bbp_anonymous_email"]{display:none !important;}
  • label[for="bbp_anonymous_email"] + br{display: none;}
  • #bbp_anonymous_website{display:none;}
  • label[for="bbp_anonymous_website"]{display:none !important;}
  • label[for="bbp_anonymous_website"] + br{display:none;}
  • </style>
  • EO;
  • return $output;
  • }
AFFS Simple Code Viewer
Copy

処理の内容

【1~3行】投稿フォームから送信されてきた情報に対するフィルタ処理を登録

【5~11行】送信されてきた名前が'nobody'・メールアドレスが'nobody@example.com'なら、bbp_anonymous_flood_checkに'1'をセット
なぜ'1'をセットするのかは不明…(*_*;
bbpress内部では、my_bbp_pre_anonymous_post_author_nameとmy_bbp_pre_anonymous_post_author_emailが、先に呼ばれる。

【12~15行】送信されてきた名前が空なら、'nobody'をセット

【16~17行】送信されてきたメールアドレスが空なら、'nobody@example.com'をセット

【21行】css出力のための、関数登録

【22~30行】postタイプを確認し、bbpressならcss登録

【31~43行】出力するcssを定義