WordpressのMW WP Formプラグインで、管理者宛メールとデータベースにフォーム送信者情報(IPとかユーザーエージェントなど)を追加するフィルターフックのやり方。
#手順
- テーマ内のfunction.phpにフィルターフックを追加する。mwform_custom_mail_tag_mw-wp-form-xxxにフィルターフックをかける。
- MW WP Formプラグインの「フォームを編集」から、追加したキーを管理者宛メール設定の「本文」に入れる。
- 「問い合わせデータをデータベースに保存」にチェックする。
##mwform_custom_mail_tag_mw-wp-form-xxxのフィルターフック
※ 詳しくは公式サイトのドキュメントを参照:
mwform_custom_mail_tag_mw-wp-form-xxx | MW WP Form
要するに、オリジナルの「メールタグ」として、送信者のユーザーエージェント、IP、ホストなどを定義してしまえば良いということです。
/**
* {user_agent} UAに変換
* {ip} IPに変換
* {host} HOSTに変換
* {send_datetime} 送信日時に変換
*
* @param string $value 送信された値
* @param string $key メールタグ
* @param int $insert_contact_data_id データベースに保存した場合、そのときの Post ID
*/
function add_sender_info( $value, $key, $insert_contact_data_id ) {
if ( $key === 'user_agent' ) {
return $_SERVER["HTTP_USER_AGENT"];
}
if ( $key === 'ip' ) {
$ip = $_SERVER["REMOTE_ADDR"];
return $ip;
}
if ( $key === 'host' ) {
$host = gethostbyaddr($_SERVER["REMOTE_ADDR"]);
return $host;
}
if ( $key === 'send_datetime' ) {
$org_timezone = date_default_timezone_get();
date_default_timezone_set('Asia/Tokyo'); //タイムゾーンを日本に
$Datetime = date("Y年n月j日 H:i:s");
date_default_timezone_set($org_timezone); //タイムゾーン戻す
return $Datetime;
}
return $value;
}
add_filter( 'mwform_custom_mail_tag_mw-wp-form-xxx', 'add_sender_info', 10, 3 );
「フォームを編集」から、管理者宛メール設定で本文に追加したキーを入力し、「問い合わせデータをデータベースに保存」にチェックする。
これで、管理者宛メールに送信者情報が入り、かつデータベースに保存時にも送信者情報として各項目が追加されるようになります。