bbPressのメールアドレス入力を任意にするちゃんとした方法

bbPressでは投稿時にメールアドレス入力が必須

WordPressにフォーラム機能を追加するプラグイン「bbPress」は、WORDPRESS.ORG の公式サポートフォーラムをはじめ、著名なテーマやプラグインのサポートフォーラムなどでも使用されています。

このプラグインですが、投稿の際にメールアドレスの入力が必須になっています。
メールアドレスを空欄にして投稿しようとすると、下記のようなエラー表示となります。

しかし、クローズドなフォーラムや匿名投稿可のフォーラムでは、メールアドレスの入力を任意にしたいことがあります。
メールアドレスの入力を不要にするのではなく、メール返信が欲しい人だけメールアドレスが入力できるように必須にしないという設定です。

残念ながら、プラグインの設定ではメールアドレス入力を任意にしたり不要にしたりすることは出来ません。

メールアドレス入力を任意にする方法(非推奨)

私が検索したところ、メールアドレス入力を任意にする方法を掲載したブログ記事が多く見つかりました。
しかし、どれもあまり良い方法とは思えませんでした。

  • プラグインのコードを編集して、エラーを検知するコードを削除(またはコメントアウト)する方法
     ↓
    プラグインをアップデートしたら元に戻ってしまいます。
    ★プラグインのファイルを直接修正するのは厳禁です!
  • 子テーマに、bbPressプラグインのエラーを検知するコードが記述されているphpファイル(bbpress/includes/common/functions.php)を複製して、エラーを検知するコードを削除(またはコメントアウト)する方法
     ↓
    プラグインがアップデートされて複製元のphpファイルが変更されたとき、子テーマに複製したphpファイルにも変更を反映する必要があります。
  • 子テーマの functions.php にて、メールアドレス入力チェック部分のフィルターフックを利用して、メールアドレスにダミーのメールアドレスを強制的に設定する方法
     ↓
    メールアドレス欄を使用しないならこの方法で良いのですが、メールアドレス入力を「任意」にはできません。

本家 bbPress のサポートフォーラム でも、あまり良い方法は見つかりませんでした。

メールアドレス入力を任意にする方法(私のオススメ)

そこで、上記のフィルターフックを利用した方法をもとにして、下記のようにしてみました。

  • メールアドレス入力チェック部分のフィルターフックを利用して、“メールアドレスが空欄だったら”ダミーのメールアドレスを設定します。
    これによりメールアドレスの入力エラーを回避できます。
  • 投稿フォーム入力値を戻す部分のフィルターフックを利用して、“メールアドレスがダミーのメールアドレスだったら”メールアドレスの戻り値を空欄にします。

メールアドレスの入力を任意にするコード

下記のコードを子テーマの functions.php に追記します。
(ダミーのメールアドレス anonymous@example.com は適当に変更してください)

function bbp_set_default_email( $post_author_email ) {
	if ( empty( $post_author_email ) ) {
		$post_author_email = 'anonymous@example.com';
	}
	return $post_author_email;
}
add_filter( 'bbp_pre_anonymous_post_author_email', 'bbp_set_default_email', 10, 1 );

function bbp_remove_default_email( $r, $args ) {
	if ( $r['bbp_anonymous_email'] == 'anonymous@example.com' ) {
		$r['bbp_anonymous_email'] = '';
	}
	return $r;
}
add_filter( 'bbp_filter_anonymous_post_data', 'bbp_remove_default_email', 10, 2 );

フィールドラベルの変更

フィールドラベルは翻訳で変更します。
(翻訳の修正方法はここでは省略します。私は Loco Translate プラグインを使っています)

原文:Mail (will not be published) (required):
 ↓
翻訳:メール(非公開)

これで下記のような表示になり、メールアドレスが未入力でもトピックの作成や返信ができます。

メールアドレスを入力した場合は、ちゃんと残ります。

この方法であれば、bbPressプラグインがアップデートされても対応することができます。

お試しください。


bbPressのフォーラムにも投稿しました。

Topic: disable email Email (required) config ? · bbPress.org
https://bbpress.org/forums/topic/disable-email-email-required-config/

この記事を書いた人

川井 昌彦
川井 昌彦
FAシステムメーカー、国内最大手印刷会社製版部、印刷・ウェブ制作会社を経て、家庭の事情で実家に帰省して独立
現在はフリーランスと制作会社シニアディレクターのマルチワーク
ウェブ制作のほぼ全般を見渡せるディレクター業務が主だが、デザイン・コーディングも好き

1997年ブログ開設
WordPressコミュニティには2011年から参加
WordCamp Kansai 2016 セッションスピーカー
WordCamp Tokyo 2023 パネルディスカッションパネラー
WordBench京都、WordBench神戸、WordPress Meetup八王子など登壇多数

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Vektor Passport(ライセンス期間1年)
VK Filter Search Pro
Vektor WordPress Solutions
PAGE TOP