🙆‍♀️

WordPressの管理画面にフォームの送信先メールアドレスを表示させるカスタマイズ

2024/10/28に公開

WordPressの管理画面で、各フォームプラグインの送信先メールアドレスを一元管理し、常に確認できるようにするカスタマイズ方法をご紹介します。

1. メールアドレスの定数定義(shortcodes.php)

/* 送信先メールアドレス(To:)の定数定義 */
$my_recipients = "info@example.com";
// $my_recipients2 = "";  // 必要に応じて追加
// $my_recipients3 = "";
// $my_recipients4 = "";

2. メールタグの設定

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;
    
    // キーと変数の対応を配列で定義
    $recipients_map = array(
        'my_recipients' => $my_recipients,
        'my_recipients2' => $my_recipients2,
        'my_recipients3' => $my_recipients3,
        'my_recipients4' => $my_recipients4
    );
    
    // キーが存在し、値が設定されている場合はその値を返す
    if (isset($recipients_map[$key]) && $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_recipients($output, $name) {
    global $my_recipients, $my_recipients2, $my_recipients3, $my_recipients4;
    
    // タグと変数の対応を配列で定義
    $recipients_map = array(
        '_my_recipients' => $my_recipients,
        '_my_recipients2' => $my_recipients2,
        '_my_recipients3' => $my_recipients3,
        '_my_recipients4' => $my_recipients4
    );
    
    // タグが存在し、値が設定されている場合はその値を返す
    if (isset($recipients_map[$name]) && $recipients_map[$name]) {
        return $recipients_map[$name];
    }
    
    return $output;
}
add_filter('wpcf7_special_mail_tags', 'add_wpcf7_recipients', 10, 2);

MTS Simple Booking の送信先制御

/* MTS Simple Bookingの送信先制御 */
add_filter('mtssb_option_premise', function($premise) {
    global $my_recipients, $my_recipients2, $my_recipients3, $my_recipients4;
    
    if ($my_recipients) {
        $premise['email'] = $my_recipients;
    }
    if ($my_recipients2) {
        $premise['email2'] = $my_recipients2;
    }
    if ($my_recipients3) {
        $premise['email3'] = $my_recipients3;
    }
    if ($my_recipients4) {
        $premise['email4'] = $my_recipients4;
    }
    
    return $premise;
});

3. 管理画面での表示設定(admin-style.php)

/* 管理画面のカスタマイズ */
function wp_admin_custom() {
    echo '<style>
    /* 送信先メールアドレス(To:)を表示 */
    #wp-admin-bar-mail_recipients {
        pointer-events: none;
        position: absolute !important;
        z-index: 10;
        top: 32px;
        left: 0px;
        margin: auto;
    }
    #wp-admin-bar-mail_recipients .ab-item {
        height: auto !important;
        padding: 0.5em 3em 0.5em 19px !important;
        background: var(--c-assort, hsl(223, 62%, 18%)) !important;
        color: #FFF;
        white-space: nowrap;
    }
    #wp-admin-bar-mail_recipients .ab-item:before {
        position: relative;
        display: inline-flex;
        justify-content: center;
        align-items: center;
        width: 0;
        height: 0.6em;
        padding-right: 0.5em;
        font-size: 160%;
        font-family: "Material Symbols Sharp";
        font-variation-settings: "FILL" 1, "wght" 400;
        content: "\\f187";
    }
    </style>';
}
add_action('admin_head', 'wp_admin_custom');

/* アドミンバーに送信先表示 */
function add_mail_recipients_to_admin_bar($wp_admin_bar) {
    global $my_recipients, $my_recipients2, $my_recipients3, $my_recipients4;
    
    $title = '<div style="line-height: 1.44;">';
    $title .= "メール送信先(To:): $my_recipients";
    if ($my_recipients2) $title .= "<br>メール送信先2(To:): $my_recipients2";
    if ($my_recipients3) $title .= "<br>メール送信先3(To:): $my_recipients3";
    if ($my_recipients4) $title .= "<br>メール送信先4(To:): $my_recipients4";
    $title .= "</div>";
    
    $args = array(
        'id'    => 'mail_recipients',
        'title' => $title,
        'meta'  => array('class' => 'mail-recipients')
    );
    $wp_admin_bar->add_node($args);
}
add_action('admin_bar_menu', 'add_mail_recipients_to_admin_bar', 998);

使用方法

フォームでのタグ使用

  • MW WP Form: {my_recipients}, {my_recipients2} など
  • Contact Form 7: [_my_recipients], [_my_recipients2] など
  • MTS Simple Booking: 自動的に設定値が適用される

表示確認

管理画面上部に送信先メールアドレスが常時表示され、一目で確認できます。

メリット

  1. 一元管理

    • すべての送信先を一箇所で管理
    • 変更が容易
    • ミスを防止
  2. 視認性

    • 管理画面で常時確認可能
    • 分かりやすい表示
    • 複数の送信先を整理して表示
  3. プラグイン連携

    • 主要フォームプラグインに対応
    • 統一的な管理が可能
    • 設定の簡略化
  4. 保守性

    • コードの管理が容易
    • 拡張が簡単
    • デバッグが容易

注意点

  • Material Symbols フォントの読み込みが必要
  • プラグインのアップデートによる影響の確認
  • 送信先の追加時はコードの修正が必要

このカスタマイズにより、複数のフォームプラグインを使用するサイトでも、送信先メールアドレスの管理が効率化され、ミスを防ぐことができます。

Discussion