メールフォームプラグインのタグや、WordPressのショートコードを効率的に管理する方法をご紹介します。複数のプラグインで使用される共通の情報を一元管理することで、保守性の向上とコードの簡潔化を実現します。
1. メールタグの整理
MW WP Form のメールタグ
/*『MW WP Form』{メールタグ} 設定 --------------------------------------*/
function add_sender_info($value, $key, $insert_contact_data_id) {
global $my_recipients, $my_recipients2, $my_recipients3, $my_recipients4;
// サーバー情報関連
$server_info = array(
'user_agent' => $_SERVER["HTTP_USER_AGENT"],
'ip' => $_SERVER["REMOTE_ADDR"],
'host' => gethostbyaddr($_SERVER["REMOTE_ADDR"])
);
if (isset($server_info[$key])) {
return $server_info[$key];
}
// 日時情報
if ($key === 'send_datetime') {
return wp_date("Y年n月j日 H:i:s", null, new DateTimeZone('Asia/Tokyo'));
}
// 投稿情報関連
$post_info = array(
'title' => get_the_title(),
'maintitle' => get_post_meta(get_the_ID(), 'maintitle', true),
'subtitle' => get_post_meta(get_the_ID(), 'subtitle', true)
);
if (isset($post_info[$key])) {
return $post_info[$key];
}
// メール送信先関連
$recipients_map = array(
'my_recipients' => $my_recipients,
'my_recipients2' => $my_recipients2,
'my_recipients3' => $my_recipients3,
'my_recipients4' => $my_recipients4
);
if (isset($recipients_map[$key])) {
return $recipients_map[$key];
}
return $value;
}
add_filter('mwform_custom_mail_tag', 'add_sender_info', 10, 3);
Contact Form 7 のメールタグ
/*『Contact Form 7』[_メールタグ] 設定 ----------------------------------*/
function add_wpcf7_custom_mail_tags($output, $name) {
global $my_recipients, $my_recipients2;
// 接頭辞"_"を削除してキー名を取得
$key = ltrim($name, '_');
// 投稿情報関連
$post_info = array(
'title' => get_the_title(),
'maintitle' => get_post_meta(get_the_ID(), 'maintitle', true),
'subtitle' => get_post_meta(get_the_ID(), 'subtitle', true)
);
if (isset($post_info[$key])) {
return $post_info[$key];
}
// メール送信先関連
$recipients_map = array(
'my_recipients' => $my_recipients,
'my_recipients2' => $my_recipients2
);
if (isset($recipients_map[$key])) {
return $recipients_map[$key];
}
return $output;
}
add_filter('wpcf7_special_mail_tags', 'add_wpcf7_custom_mail_tags', 10, 2);
コードの解説
1. 情報のグループ化
- 関連する情報を配列でグループ化
- サーバー情報、投稿情報、メール送信先などをカテゴリ分け
- 新しい項目の追加が容易な構造
2. 条件分岐の効率化
- 配列を使用して条件分岐を簡略化
- メンテナンス性の向上
- コードの重複を防止
3. エラー処理
- 存在しないキーへの安全なアクセス
- 未定義の値に対するフォールバック
- データの整合性を確保
4. プラグイン固有の処理
- MW WP Form:
{タグ名}形式でアクセス - Contact Form 7:
[_タグ名]形式でアクセス - プラグインごとの仕様に対応
使用例
MW WP Form での使用
{title} : 記事タイトル
{my_recipients} : 送信先メールアドレス
{send_datetime} : 送信日時
Contact Form 7 での使用
[_title] : 記事タイトル
[_my_recipients] : 送信先メールアドレス
メリット
一元管理
- 共通情報を1箇所で管理
- 値の更新が容易
- 整合性の維持
保守性
- コードの見通しが良好
- デバッグが容易
- 拡張が簡単
効率性
- 重複コードの削減
- パフォーマンスの向上
- メモリ使用の最適化
拡張性
- 新しいタグの追加が容易
- プラグインの追加対応が容易
- 構造化されたコード
注意点
- プラグインのアップデートによる影響を考慮
- タグ名の重複に注意
- 適切なエラー処理の実装
このような整理により、複数のフォームプラグインを使用するサイトでも、一貫性のある効率的な管理が可能になります。

