1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Posted at

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 フォントの読み込みが必要
  • プラグインのアップデートによる影響の確認
  • 送信先の追加時はコードの修正が必要

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

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?