MoyaSystem

もやしです。

BuddyPressのプライベートメッセージ通知メールが届かないときの対処

そもそも

BuddyPressにはプライベートメッセージ機能が実装されており、ユーザ同士が互いのメールアドレスを知ること無くコミュニケーションを取ることができる。
これ、デフォルトでメッセージを受信したときに登録メールアドレスにもメールが送信されるのだが、メールがきちんと送信されない場合がある。

どうして?

プライベートメッセージを送信する際、DBにメッセージの情報が登録される。
その際、自動インクリメントでカラムIDを取得し、それが取得できていればメッセージを送信、という流れになっている。
しかしDBの登録はうまくいっているのに、カラムIDが取得できないという場合がある。ちゃんとメッセージは送れているのに通知メールが来ないので、これはちょっと困ります。

対処

つぎのコードをfunction.phpに記述して、メール送信のタイミングを変えてしまえ。

// change timing of sending notification mail
remove_action('messages_message_sent', 'messages_notification_new_message');
add_action('messages_message_after_save', 'messages_notification_new_message', 10);