WP Advanced Commentでコメント欄に追加した項目をメール通知にも

Wordpressのコメント欄を自由にカスタマイズできる便利なプラグイン「WP Advanced Comment
(残念ながら無料プラグインの公開は2019年3月で終了していました。有料版はこちら



不要なフィールドを非表示にしたり、新しい項目を増やすこともできます。
カスタマイズした内容はコメント欄に表示させたり、管理画面で確認できますが、ただメールのコメント通知の文面は変わりません。
以前投稿した「コメント通知のメール本文を変更する」の方法を利用して追加した項目をメール通知にも挿入することにしました。

それがなかなか一筋縄ではいかなかったので、メモしておきます。
公開終了しているプラグインなのであまり需要はないかもしれませんが、アクションフックの順位について確認するいい機会になりましたので、参考になれば幸いです。


WP Advanced Commentで追加された項目は、commentmetaテーブルに保存されています。
meta_keyに設定画面のMeta_keyで設定した文字列、meta_valueにコメント欄で入力された値が入っています。

今回コメント欄に「来店日(raitenbi)」と「担当(tantou)」を追加したと仮定して、
function.phpにコメント通知のメール本文を変更する為のフィルター関数を追記します。


これでOK!と思いきや、なんとメールの該当箇所は空欄のまま。
DBにはきちんと登録されているし、なんでだよとしばらく悩みました。

で気が付いたのです。

コメント送信された後の動作の順番
⇒spam判定などのチェック
⇒DBのcommentsテーブルにコメントの内容が登録される
⇒通知メールが送信される
⇒WP Advanced Commentで設定した追加項目の内容がDBのcommentmetaテーブルに登録される

なので、通知メールを操作する時にはまだcommentmetaにはデータが空なんですね。

原因はWP Advanced CommentがDBを書き込む動作を「comment_post」アクションにフックしているのですが、本体のコメント通知を送信する動作も「comment_post」をアクションフックにしていたのです。

その為DBに書き込まれる前にコメント通知が送信されていたということです。

なのでWP Advanced CommentがDBに書き込む動作が先に動くように、アクションフックの優先順位を変更しました。

プラグインフォルダの「functions/frontend.php 1463行目くらい」

これで無事にコメント欄に追加した項目もメール通知されるようになりました。

Comments

コメントする