メールフォームプラグインのタグや、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. 一元管理

    • 共通情報を1箇所で管理
    • 値の更新が容易
    • 整合性の維持
  2. 保守性

    • コードの見通しが良好
    • デバッグが容易
    • 拡張が簡単
  3. 効率性

    • 重複コードの削減
    • パフォーマンスの向上
    • メモリ使用の最適化
  4. 拡張性

    • 新しいタグの追加が容易
    • プラグインの追加対応が容易
    • 構造化されたコード

注意点

  • プラグインのアップデートによる影響を考慮
  • タグ名の重複に注意
  • 適切なエラー処理の実装

このような整理により、複数のフォームプラグインを使用するサイトでも、一貫性のある効率的な管理が可能になります。