---
title: Add Additional Admin Notification Addresses
date: 2025-10-06T06:02:13Z
modified: 2025-10-06T06:02:14Z
permalink: "https://techarticles.co.uk/add-additional-admin-notification-addresses/"
type: post
status: publish
excerpt: ""
wpid: 5645
categories:
  - Blog
  - Coding
  - Wordpress
timestamp: 2025-10-06T06:02:14Z
tags:
  - Blog
  - Coding
  - Wordpress
---

I’ve been adding additional admin addresses for a long-time to WordPress installations, the sites actual admin and a few of my own its important to get those your site is having issues emails and to make sure everyone gets a copy particularly if you have clients. After all how good must it be to say its already fixed when they raise an issue or concern with you.

I’ve been doing this with an ever evolving snippet and today following a facebook post requesting this sort of thing thought i’d publish the latest snippet of how I am doing this.

## Snippet

Using your snippet manager of choice for me thats wpcodebox, you need to add the below code

<?php
/** ---------------------------
 *  Settings field + sanitize
 * --------------------------*/
add_action('admin_init', function () {
    add_settings_field(
        'additional_admin_emails',
        'Additional Admin Emails',
        'naf_render_email_field',
        'general',
        'default'
    );

    register_setting('general', 'additional_admin_emails', [
        'type'              => 'string',
        'sanitize_callback' => 'naf_sanitize_emails',
        'default'           => '',
    ]);
});

function naf_render_email_field() {
    $emails = get_option('additional_admin_emails', '');
    echo '<textarea name="additional_admin_emails" id="additional_admin_emails" class="large-text" rows="3" placeholder="Enter emails separated by commas, semicolons, or new lines">'
        . esc_textarea($emails)
        . '</textarea>';
    echo '<p class="description">These addresses will receive <em>separate</em> copies of any email originally sent to the main admin email.</p>';
}

function naf_sanitize_emails($value) {
    $raw = preg_split('/[\s,;]+/', (string) $value, -1, PREG_SPLIT_NO_EMPTY);
    $valid = [];
    foreach ($raw as $e) {
        $e = strtolower(trim($e));
        if (is_email($e)) $valid[$e] = true;
    }
    return implode(', ', array_keys($valid));
}

function naf_get_extra_recipients() {
    $list = get_option('additional_admin_emails', '');
    if ($list === '') return [];
    $raw = preg_split('/[\s,;]+/', (string) $list, -1, PREG_SPLIT_NO_EMPTY);
    $out = [];
    foreach ($raw as $e) {
        $e = strtolower(trim($e));
        if (is_email($e)) $out[$e] = true;
    }
    return array_keys($out);
}

/** ---------------------------------
 *  Fan-out mailer via pre_wp_mail
 * --------------------------------*/
function naf_pre_wp_mail_fanout($pre, $atts) {
    $extras = naf_get_extra_recipients();
    if (!$extras) return $pre;

    $admin_email = strtolower(get_option('admin_email'));
    $original_to = is_array($atts['to']) ? $atts['to'] : explode(',', $atts['to']);
    $original_to = array_map('trim', $original_to);
    $original_to = array_map('strtolower', $original_to);

    // Abort if admin email isn't a recipient
    if (!in_array($admin_email, $original_to, true)) {
        return $pre;
    }

    // Collect original recipients (to/cc/bcc) to avoid duplicates
    $original = [];
    foreach ($original_to as $addr) {
        if (is_email($addr)) $original[$addr] = true;
    }

    $headers = isset($atts['headers']) ? (array)$atts['headers'] : [];
    foreach ($headers as $h) {
        if (!is_string($h)) continue;
        if (preg_match('/^(Cc|Bcc):\s*(.+)$/i', $h, $m)) {
            foreach (preg_split('/\s*,\s*/', $m[2]) as $a) {
                $a = strtolower(trim($a));
                if (is_email($a)) $original[$a] = true;
            }
        }
    }

    $fanout = array_values(array_diff($extras, array_keys($original)));
    if (!$fanout) return $pre;

    // Prevent recursion (named function removal works now)
    remove_filter('pre_wp_mail', 'naf_pre_wp_mail_fanout', 10);

    $ok_all = true;

    // Send original
    $ok = wp_mail(
        $atts['to'],
        $atts['subject'],
        $atts['message'],
        $atts['headers'] ?? [],
        $atts['attachments'] ?? []
    );
    $ok_all = $ok_all && (bool)$ok;

    // Send clones
    foreach ($fanout as $rcpt) {
        $ok = wp_mail(
            $rcpt,
            $atts['subject'],
            $atts['message'],
            $atts['headers'] ?? [],
            $atts['attachments'] ?? []
        );
        $ok_all = $ok_all && (bool)$ok;
    }

    add_filter('pre_wp_mail', 'naf_pre_wp_mail_fanout', 10, 2);

    return $ok_all;
}
add_filter('pre_wp_mail', 'naf_pre_wp_mail_fanout', 10, 2);

/** -------------------------------------------
 *  Test button (POST form) with nonce
 * ------------------------------------------*/
add_action('admin_footer-options-general.php', function () {
    if (!current_user_can('manage_options')) return;

    $action  = esc_url( admin_url('admin-post.php') );
    $nonce   = wp_create_nonce('naf_send_test_action');
    ?>
    <script>
    (function(){
        const field = document.getElementById('additional_admin_emails');
        if (!field) return;
        const row = field.closest('tr');
        if (!row) return;
        const cell = row.querySelector('td');

        const form = document.createElement('form');
        form.method = 'POST';
        form.action = <?php echo json_encode($action); ?>;
        form.style.marginTop = '8px';
        form.style.display = 'inline-block';

        const act  = document.createElement('input');
        act.type   = 'hidden';
        act.name   = 'action';
        act.value  = 'naf_send_test';

        const nonce = document.createElement('input');
        nonce.type  = 'hidden';
        nonce.name  = '_wpnonce';
        nonce.value = <?php echo json_encode($nonce); ?>;

        const btn  = document.createElement('button');
        btn.type   = 'submit';
        btn.className = 'button';
        btn.textContent = 'Send Test Email';

        form.appendChild(act);
        form.appendChild(nonce);
        form.appendChild(btn);

        cell.appendChild(document.createElement('br'));
        cell.appendChild(form);
    })();
    </script>
    <?php
});

add_action('admin_post_naf_send_test', function () {
    if (!current_user_can('manage_options') || !check_admin_referer('naf_send_test_action')) {
        wp_die('Not allowed.');
    }

    $to = get_option('admin_email');
    $subject = 'Test: Additional Admin Emails (Fan-out)';
    $message = "Hello!\n\nThis is a test email sent on " . date('c') . ".\nEach additional recipient should receive a separate email (only triggers because it's addressed to the admin email).";

    $ok = wp_mail($to, $subject, $message);

    add_settings_error(
        'general',
        'naf_test_mail',
        $ok ? '✅ Test email sent.' : '❌ Test email failed.',
        $ok ? 'updated' : 'error'
    );

    wp_safe_redirect( admin_url('options-general.php#additional_admin_emails') );
    exit;
});
```
<span class="line"><span style="color: #F97583"><?</span><span style="color: #79B8FF">php</span></span>
<span class="line"><span style="color: #6A737D">/** ---------------------------</span></span>
<span class="line"><span style="color: #6A737D"> *  Settings field + sanitize</span></span>
<span class="line"><span style="color: #6A737D"> * --------------------------*/</span></span>
<span class="line"><span style="color: #B392F0">add_action</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'admin_init'</span><span style="color: #E1E4E8">, </span><span style="color: #F97583">function</span><span style="color: #E1E4E8"> () {</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #B392F0">add_settings_field</span><span style="color: #E1E4E8">(</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #9ECBFF">'additional_admin_emails'</span><span style="color: #E1E4E8">,</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #9ECBFF">'Additional Admin Emails'</span><span style="color: #E1E4E8">,</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #9ECBFF">'naf_render_email_field'</span><span style="color: #E1E4E8">,</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #9ECBFF">'general'</span><span style="color: #E1E4E8">,</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #9ECBFF">'default'</span></span>
<span class="line"><span style="color: #E1E4E8">    );</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #B392F0">register_setting</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'general'</span><span style="color: #E1E4E8">, </span><span style="color: #9ECBFF">'additional_admin_emails'</span><span style="color: #E1E4E8">, [</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #9ECBFF">'type'</span><span style="color: #E1E4E8">              </span><span style="color: #F97583">=></span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">'string'</span><span style="color: #E1E4E8">,</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #9ECBFF">'sanitize_callback'</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">=></span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">'naf_sanitize_emails'</span><span style="color: #E1E4E8">,</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #9ECBFF">'default'</span><span style="color: #E1E4E8">           </span><span style="color: #F97583">=></span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">''</span><span style="color: #E1E4E8">,</span></span>
<span class="line"><span style="color: #E1E4E8">    ]);</span></span>
<span class="line"><span style="color: #E1E4E8">});</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F97583">function</span><span style="color: #E1E4E8"> </span><span style="color: #B392F0">naf_render_email_field</span><span style="color: #E1E4E8">() {</span></span>
<span class="line"><span style="color: #E1E4E8">    $emails </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #B392F0">get_option</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'additional_admin_emails'</span><span style="color: #E1E4E8">, </span><span style="color: #9ECBFF">''</span><span style="color: #E1E4E8">);</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #79B8FF">echo</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">'<textarea name="additional_admin_emails" id="additional_admin_emails" class="large-text" rows="3" placeholder="Enter emails separated by commas, semicolons, or new lines">'</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #F97583">.</span><span style="color: #E1E4E8"> </span><span style="color: #B392F0">esc_textarea</span><span style="color: #E1E4E8">($emails)</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #F97583">.</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">'</textarea>'</span><span style="color: #E1E4E8">;</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #79B8FF">echo</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">'<p class="description">These addresses will receive <em>separate</em> copies of any email originally sent to the main admin email.</p>'</span><span style="color: #E1E4E8">;</span></span>
<span class="line"><span style="color: #E1E4E8">}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F97583">function</span><span style="color: #E1E4E8"> </span><span style="color: #B392F0">naf_sanitize_emails</span><span style="color: #E1E4E8">($value) {</span></span>
<span class="line"><span style="color: #E1E4E8">    $raw </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">preg_split</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'/</span><span style="color: #DBEDFF">[\s,;]</span><span style="color: #F97583">+</span><span style="color: #9ECBFF">/'</span><span style="color: #E1E4E8">, (</span><span style="color: #F97583">string</span><span style="color: #E1E4E8">) $value, </span><span style="color: #F97583">-</span><span style="color: #79B8FF">1</span><span style="color: #E1E4E8">, </span><span style="color: #79B8FF">PREG_SPLIT_NO_EMPTY</span><span style="color: #E1E4E8">);</span></span>
<span class="line"><span style="color: #E1E4E8">    $valid </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> [];</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">foreach</span><span style="color: #E1E4E8"> ($raw </span><span style="color: #F97583">as</span><span style="color: #E1E4E8"> $e) {</span></span>
<span class="line"><span style="color: #E1E4E8">        $e </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">strtolower</span><span style="color: #E1E4E8">(</span><span style="color: #79B8FF">trim</span><span style="color: #E1E4E8">($e));</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #F97583">if</span><span style="color: #E1E4E8"> (</span><span style="color: #B392F0">is_email</span><span style="color: #E1E4E8">($e)) $valid[$e] </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">true</span><span style="color: #E1E4E8">;</span></span>
<span class="line"><span style="color: #E1E4E8">    }</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">return</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">implode</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">', '</span><span style="color: #E1E4E8">, </span><span style="color: #79B8FF">array_keys</span><span style="color: #E1E4E8">($valid));</span></span>
<span class="line"><span style="color: #E1E4E8">}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F97583">function</span><span style="color: #E1E4E8"> </span><span style="color: #B392F0">naf_get_extra_recipients</span><span style="color: #E1E4E8">() {</span></span>
<span class="line"><span style="color: #E1E4E8">    $list </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #B392F0">get_option</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'additional_admin_emails'</span><span style="color: #E1E4E8">, </span><span style="color: #9ECBFF">''</span><span style="color: #E1E4E8">);</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">if</span><span style="color: #E1E4E8"> ($list </span><span style="color: #F97583">===</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">''</span><span style="color: #E1E4E8">) </span><span style="color: #F97583">return</span><span style="color: #E1E4E8"> [];</span></span>
<span class="line"><span style="color: #E1E4E8">    $raw </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">preg_split</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'/</span><span style="color: #DBEDFF">[\s,;]</span><span style="color: #F97583">+</span><span style="color: #9ECBFF">/'</span><span style="color: #E1E4E8">, (</span><span style="color: #F97583">string</span><span style="color: #E1E4E8">) $list, </span><span style="color: #F97583">-</span><span style="color: #79B8FF">1</span><span style="color: #E1E4E8">, </span><span style="color: #79B8FF">PREG_SPLIT_NO_EMPTY</span><span style="color: #E1E4E8">);</span></span>
<span class="line"><span style="color: #E1E4E8">    $out </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> [];</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">foreach</span><span style="color: #E1E4E8"> ($raw </span><span style="color: #F97583">as</span><span style="color: #E1E4E8"> $e) {</span></span>
<span class="line"><span style="color: #E1E4E8">        $e </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">strtolower</span><span style="color: #E1E4E8">(</span><span style="color: #79B8FF">trim</span><span style="color: #E1E4E8">($e));</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #F97583">if</span><span style="color: #E1E4E8"> (</span><span style="color: #B392F0">is_email</span><span style="color: #E1E4E8">($e)) $out[$e] </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">true</span><span style="color: #E1E4E8">;</span></span>
<span class="line"><span style="color: #E1E4E8">    }</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">return</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">array_keys</span><span style="color: #E1E4E8">($out);</span></span>
<span class="line"><span style="color: #E1E4E8">}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #6A737D">/** ---------------------------------</span></span>
<span class="line"><span style="color: #6A737D"> *  Fan-out mailer via pre_wp_mail</span></span>
<span class="line"><span style="color: #6A737D"> * --------------------------------*/</span></span>
<span class="line"><span style="color: #F97583">function</span><span style="color: #E1E4E8"> </span><span style="color: #B392F0">naf_pre_wp_mail_fanout</span><span style="color: #E1E4E8">($pre, $atts) {</span></span>
<span class="line"><span style="color: #E1E4E8">    $extras </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #B392F0">naf_get_extra_recipients</span><span style="color: #E1E4E8">();</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">if</span><span style="color: #E1E4E8"> (</span><span style="color: #F97583">!</span><span style="color: #E1E4E8">$extras) </span><span style="color: #F97583">return</span><span style="color: #E1E4E8"> $pre;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">    $admin_email </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">strtolower</span><span style="color: #E1E4E8">(</span><span style="color: #B392F0">get_option</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'admin_email'</span><span style="color: #E1E4E8">));</span></span>
<span class="line"><span style="color: #E1E4E8">    $original_to </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">is_array</span><span style="color: #E1E4E8">($atts[</span><span style="color: #9ECBFF">'to'</span><span style="color: #E1E4E8">]) </span><span style="color: #F97583">?</span><span style="color: #E1E4E8"> $atts[</span><span style="color: #9ECBFF">'to'</span><span style="color: #E1E4E8">] </span><span style="color: #F97583">:</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">explode</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">','</span><span style="color: #E1E4E8">, $atts[</span><span style="color: #9ECBFF">'to'</span><span style="color: #E1E4E8">]);</span></span>
<span class="line"><span style="color: #E1E4E8">    $original_to </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">array_map</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'trim'</span><span style="color: #E1E4E8">, $original_to);</span></span>
<span class="line"><span style="color: #E1E4E8">    $original_to </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">array_map</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'strtolower'</span><span style="color: #E1E4E8">, $original_to);</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #6A737D">// Abort if admin email isn't a recipient</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">if</span><span style="color: #E1E4E8"> (</span><span style="color: #F97583">!</span><span style="color: #79B8FF">in_array</span><span style="color: #E1E4E8">($admin_email, $original_to, </span><span style="color: #79B8FF">true</span><span style="color: #E1E4E8">)) {</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #F97583">return</span><span style="color: #E1E4E8"> $pre;</span></span>
<span class="line"><span style="color: #E1E4E8">    }</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #6A737D">// Collect original recipients (to/cc/bcc) to avoid duplicates</span></span>
<span class="line"><span style="color: #E1E4E8">    $original </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> [];</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">foreach</span><span style="color: #E1E4E8"> ($original_to </span><span style="color: #F97583">as</span><span style="color: #E1E4E8"> $addr) {</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #F97583">if</span><span style="color: #E1E4E8"> (</span><span style="color: #B392F0">is_email</span><span style="color: #E1E4E8">($addr)) $original[$addr] </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">true</span><span style="color: #E1E4E8">;</span></span>
<span class="line"><span style="color: #E1E4E8">    }</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">    $headers </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">isset</span><span style="color: #E1E4E8">($atts[</span><span style="color: #9ECBFF">'headers'</span><span style="color: #E1E4E8">]) </span><span style="color: #F97583">?</span><span style="color: #E1E4E8"> (</span><span style="color: #F97583">array</span><span style="color: #E1E4E8">)$atts[</span><span style="color: #9ECBFF">'headers'</span><span style="color: #E1E4E8">] </span><span style="color: #F97583">:</span><span style="color: #E1E4E8"> [];</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">foreach</span><span style="color: #E1E4E8"> ($headers </span><span style="color: #F97583">as</span><span style="color: #E1E4E8"> $h) {</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #F97583">if</span><span style="color: #E1E4E8"> (</span><span style="color: #F97583">!</span><span style="color: #79B8FF">is_string</span><span style="color: #E1E4E8">($h)) </span><span style="color: #F97583">continue</span><span style="color: #E1E4E8">;</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #F97583">if</span><span style="color: #E1E4E8"> (</span><span style="color: #79B8FF">preg_match</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'/</span><span style="color: #F97583">^</span><span style="color: #DBEDFF">(Cc|Bcc):</span><span style="color: #85E89D; font-weight: bold">\s</span><span style="color: #F97583">*</span><span style="color: #DBEDFF">(.</span><span style="color: #F97583">+</span><span style="color: #DBEDFF">)</span><span style="color: #F97583">$</span><span style="color: #9ECBFF">/i'</span><span style="color: #E1E4E8">, $h, $m)) {</span></span>
<span class="line"><span style="color: #E1E4E8">            </span><span style="color: #F97583">foreach</span><span style="color: #E1E4E8"> (</span><span style="color: #79B8FF">preg_split</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'/</span><span style="color: #85E89D; font-weight: bold">\s</span><span style="color: #F97583">*</span><span style="color: #DBEDFF">,</span><span style="color: #85E89D; font-weight: bold">\s</span><span style="color: #F97583">*</span><span style="color: #9ECBFF">/'</span><span style="color: #E1E4E8">, $m[</span><span style="color: #79B8FF">2</span><span style="color: #E1E4E8">]) </span><span style="color: #F97583">as</span><span style="color: #E1E4E8"> $a) {</span></span>
<span class="line"><span style="color: #E1E4E8">                $a </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">strtolower</span><span style="color: #E1E4E8">(</span><span style="color: #79B8FF">trim</span><span style="color: #E1E4E8">($a));</span></span>
<span class="line"><span style="color: #E1E4E8">                </span><span style="color: #F97583">if</span><span style="color: #E1E4E8"> (</span><span style="color: #B392F0">is_email</span><span style="color: #E1E4E8">($a)) $original[$a] </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">true</span><span style="color: #E1E4E8">;</span></span>
<span class="line"><span style="color: #E1E4E8">            }</span></span>
<span class="line"><span style="color: #E1E4E8">        }</span></span>
<span class="line"><span style="color: #E1E4E8">    }</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">    $fanout </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">array_values</span><span style="color: #E1E4E8">(</span><span style="color: #79B8FF">array_diff</span><span style="color: #E1E4E8">($extras, </span><span style="color: #79B8FF">array_keys</span><span style="color: #E1E4E8">($original)));</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">if</span><span style="color: #E1E4E8"> (</span><span style="color: #F97583">!</span><span style="color: #E1E4E8">$fanout) </span><span style="color: #F97583">return</span><span style="color: #E1E4E8"> $pre;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #6A737D">// Prevent recursion (named function removal works now)</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #B392F0">remove_filter</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'pre_wp_mail'</span><span style="color: #E1E4E8">, </span><span style="color: #9ECBFF">'naf_pre_wp_mail_fanout'</span><span style="color: #E1E4E8">, </span><span style="color: #79B8FF">10</span><span style="color: #E1E4E8">);</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">    $ok_all </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">true</span><span style="color: #E1E4E8">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #6A737D">// Send original</span></span>
<span class="line"><span style="color: #E1E4E8">    $ok </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #B392F0">wp_mail</span><span style="color: #E1E4E8">(</span></span>
<span class="line"><span style="color: #E1E4E8">        $atts[</span><span style="color: #9ECBFF">'to'</span><span style="color: #E1E4E8">],</span></span>
<span class="line"><span style="color: #E1E4E8">        $atts[</span><span style="color: #9ECBFF">'subject'</span><span style="color: #E1E4E8">],</span></span>
<span class="line"><span style="color: #E1E4E8">        $atts[</span><span style="color: #9ECBFF">'message'</span><span style="color: #E1E4E8">],</span></span>
<span class="line"><span style="color: #E1E4E8">        $atts[</span><span style="color: #9ECBFF">'headers'</span><span style="color: #E1E4E8">] </span><span style="color: #F97583">??</span><span style="color: #E1E4E8"> [],</span></span>
<span class="line"><span style="color: #E1E4E8">        $atts[</span><span style="color: #9ECBFF">'attachments'</span><span style="color: #E1E4E8">] </span><span style="color: #F97583">??</span><span style="color: #E1E4E8"> []</span></span>
<span class="line"><span style="color: #E1E4E8">    );</span></span>
<span class="line"><span style="color: #E1E4E8">    $ok_all </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> $ok_all </span><span style="color: #F97583">&&</span><span style="color: #E1E4E8"> (</span><span style="color: #F97583">bool</span><span style="color: #E1E4E8">)$ok;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #6A737D">// Send clones</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">foreach</span><span style="color: #E1E4E8"> ($fanout </span><span style="color: #F97583">as</span><span style="color: #E1E4E8"> $rcpt) {</span></span>
<span class="line"><span style="color: #E1E4E8">        $ok </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #B392F0">wp_mail</span><span style="color: #E1E4E8">(</span></span>
<span class="line"><span style="color: #E1E4E8">            $rcpt,</span></span>
<span class="line"><span style="color: #E1E4E8">            $atts[</span><span style="color: #9ECBFF">'subject'</span><span style="color: #E1E4E8">],</span></span>
<span class="line"><span style="color: #E1E4E8">            $atts[</span><span style="color: #9ECBFF">'message'</span><span style="color: #E1E4E8">],</span></span>
<span class="line"><span style="color: #E1E4E8">            $atts[</span><span style="color: #9ECBFF">'headers'</span><span style="color: #E1E4E8">] </span><span style="color: #F97583">??</span><span style="color: #E1E4E8"> [],</span></span>
<span class="line"><span style="color: #E1E4E8">            $atts[</span><span style="color: #9ECBFF">'attachments'</span><span style="color: #E1E4E8">] </span><span style="color: #F97583">??</span><span style="color: #E1E4E8"> []</span></span>
<span class="line"><span style="color: #E1E4E8">        );</span></span>
<span class="line"><span style="color: #E1E4E8">        $ok_all </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> $ok_all </span><span style="color: #F97583">&&</span><span style="color: #E1E4E8"> (</span><span style="color: #F97583">bool</span><span style="color: #E1E4E8">)$ok;</span></span>
<span class="line"><span style="color: #E1E4E8">    }</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #B392F0">add_filter</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'pre_wp_mail'</span><span style="color: #E1E4E8">, </span><span style="color: #9ECBFF">'naf_pre_wp_mail_fanout'</span><span style="color: #E1E4E8">, </span><span style="color: #79B8FF">10</span><span style="color: #E1E4E8">, </span><span style="color: #79B8FF">2</span><span style="color: #E1E4E8">);</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">return</span><span style="color: #E1E4E8"> $ok_all;</span></span>
<span class="line"><span style="color: #E1E4E8">}</span></span>
<span class="line"><span style="color: #B392F0">add_filter</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'pre_wp_mail'</span><span style="color: #E1E4E8">, </span><span style="color: #9ECBFF">'naf_pre_wp_mail_fanout'</span><span style="color: #E1E4E8">, </span><span style="color: #79B8FF">10</span><span style="color: #E1E4E8">, </span><span style="color: #79B8FF">2</span><span style="color: #E1E4E8">);</span></span>
<span class="line"></span>
<span class="line"><span style="color: #6A737D">/** -------------------------------------------</span></span>
<span class="line"><span style="color: #6A737D"> *  Test button (POST form) with nonce</span></span>
<span class="line"><span style="color: #6A737D"> * ------------------------------------------*/</span></span>
<span class="line"><span style="color: #B392F0">add_action</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'admin_footer-options-general.php'</span><span style="color: #E1E4E8">, </span><span style="color: #F97583">function</span><span style="color: #E1E4E8"> () {</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">if</span><span style="color: #E1E4E8"> (</span><span style="color: #F97583">!</span><span style="color: #B392F0">current_user_can</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'manage_options'</span><span style="color: #E1E4E8">)) </span><span style="color: #F97583">return</span><span style="color: #E1E4E8">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">    $action  </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #B392F0">esc_url</span><span style="color: #E1E4E8">( </span><span style="color: #B392F0">admin_url</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'admin-post.php'</span><span style="color: #E1E4E8">) );</span></span>
<span class="line"><span style="color: #E1E4E8">    $nonce   </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #B392F0">wp_create_nonce</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'naf_send_test_action'</span><span style="color: #E1E4E8">);</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">?></span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583"><</span><span style="color: #79B8FF">script</span><span style="color: #F97583">></span></span>
<span class="line"><span style="color: #E1E4E8">    (</span><span style="color: #F97583">function</span><span style="color: #E1E4E8">(){</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #F97583">const</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">field</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">document</span><span style="color: #F97583">.</span><span style="color: #B392F0">getElementById</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'additional_admin_emails'</span><span style="color: #E1E4E8">);</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #F97583">if</span><span style="color: #E1E4E8"> (</span><span style="color: #F97583">!</span><span style="color: #79B8FF">field</span><span style="color: #E1E4E8">) </span><span style="color: #F97583">return</span><span style="color: #E1E4E8">;</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #F97583">const</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">row</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">field</span><span style="color: #F97583">.</span><span style="color: #B392F0">closest</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'tr'</span><span style="color: #E1E4E8">);</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #F97583">if</span><span style="color: #E1E4E8"> (</span><span style="color: #F97583">!</span><span style="color: #79B8FF">row</span><span style="color: #E1E4E8">) </span><span style="color: #F97583">return</span><span style="color: #E1E4E8">;</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #F97583">const</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">cell</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">row</span><span style="color: #F97583">.</span><span style="color: #B392F0">querySelector</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'td'</span><span style="color: #E1E4E8">);</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #F97583">const</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">form</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">document</span><span style="color: #F97583">.</span><span style="color: #B392F0">createElement</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'form'</span><span style="color: #E1E4E8">);</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #79B8FF">form</span><span style="color: #F97583">.</span><span style="color: #79B8FF">method</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">'POST'</span><span style="color: #E1E4E8">;</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #79B8FF">form</span><span style="color: #F97583">.</span><span style="color: #79B8FF">action</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #F97583"><?</span><span style="color: #79B8FF">php</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">echo</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">json_encode</span><span style="color: #E1E4E8">($action); </span><span style="color: #F97583">?></span><span style="color: #E1E4E8">;</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #79B8FF">form</span><span style="color: #F97583">.</span><span style="color: #79B8FF">style</span><span style="color: #F97583">.</span><span style="color: #79B8FF">marginTop</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">'8px'</span><span style="color: #E1E4E8">;</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #79B8FF">form</span><span style="color: #F97583">.</span><span style="color: #79B8FF">style</span><span style="color: #F97583">.</span><span style="color: #79B8FF">display</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">'inline-block'</span><span style="color: #E1E4E8">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #F97583">const</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">act</span><span style="color: #E1E4E8">  </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">document</span><span style="color: #F97583">.</span><span style="color: #B392F0">createElement</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'input'</span><span style="color: #E1E4E8">);</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #79B8FF">act</span><span style="color: #F97583">.</span><span style="color: #79B8FF">type</span><span style="color: #E1E4E8">   </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">'hidden'</span><span style="color: #E1E4E8">;</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #79B8FF">act</span><span style="color: #F97583">.</span><span style="color: #79B8FF">name</span><span style="color: #E1E4E8">   </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">'action'</span><span style="color: #E1E4E8">;</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #79B8FF">act</span><span style="color: #F97583">.</span><span style="color: #79B8FF">value</span><span style="color: #E1E4E8">  </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">'naf_send_test'</span><span style="color: #E1E4E8">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #F97583">const</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">nonce</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">document</span><span style="color: #F97583">.</span><span style="color: #B392F0">createElement</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'input'</span><span style="color: #E1E4E8">);</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #79B8FF">nonce</span><span style="color: #F97583">.</span><span style="color: #79B8FF">type</span><span style="color: #E1E4E8">  </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">'hidden'</span><span style="color: #E1E4E8">;</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #79B8FF">nonce</span><span style="color: #F97583">.</span><span style="color: #79B8FF">name</span><span style="color: #E1E4E8">  </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">'_wpnonce'</span><span style="color: #E1E4E8">;</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #79B8FF">nonce</span><span style="color: #F97583">.</span><span style="color: #79B8FF">value</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #F97583"><?</span><span style="color: #79B8FF">php</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">echo</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">json_encode</span><span style="color: #E1E4E8">($nonce); </span><span style="color: #F97583">?></span><span style="color: #E1E4E8">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #F97583">const</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">btn</span><span style="color: #E1E4E8">  </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">document</span><span style="color: #F97583">.</span><span style="color: #B392F0">createElement</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'button'</span><span style="color: #E1E4E8">);</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #79B8FF">btn</span><span style="color: #F97583">.</span><span style="color: #79B8FF">type</span><span style="color: #E1E4E8">   </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">'submit'</span><span style="color: #E1E4E8">;</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #79B8FF">btn</span><span style="color: #F97583">.</span><span style="color: #79B8FF">className</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">'button'</span><span style="color: #E1E4E8">;</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #79B8FF">btn</span><span style="color: #F97583">.</span><span style="color: #79B8FF">textContent</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">'Send Test Email'</span><span style="color: #E1E4E8">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #79B8FF">form</span><span style="color: #F97583">.</span><span style="color: #B392F0">appendChild</span><span style="color: #E1E4E8">(</span><span style="color: #79B8FF">act</span><span style="color: #E1E4E8">);</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #79B8FF">form</span><span style="color: #F97583">.</span><span style="color: #B392F0">appendChild</span><span style="color: #E1E4E8">(</span><span style="color: #79B8FF">nonce</span><span style="color: #E1E4E8">);</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #79B8FF">form</span><span style="color: #F97583">.</span><span style="color: #B392F0">appendChild</span><span style="color: #E1E4E8">(</span><span style="color: #79B8FF">btn</span><span style="color: #E1E4E8">);</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #79B8FF">cell</span><span style="color: #F97583">.</span><span style="color: #B392F0">appendChild</span><span style="color: #E1E4E8">(</span><span style="color: #79B8FF">document</span><span style="color: #F97583">.</span><span style="color: #B392F0">createElement</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'br'</span><span style="color: #E1E4E8">));</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #79B8FF">cell</span><span style="color: #F97583">.</span><span style="color: #B392F0">appendChild</span><span style="color: #E1E4E8">(</span><span style="color: #79B8FF">form</span><span style="color: #E1E4E8">);</span></span>
<span class="line"><span style="color: #E1E4E8">    })();</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583"></</span><span style="color: #79B8FF">script</span><span style="color: #F97583">></span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583"><?</span><span style="color: #79B8FF">php</span></span>
<span class="line"><span style="color: #E1E4E8">});</span></span>
<span class="line"></span>
<span class="line"><span style="color: #B392F0">add_action</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'admin_post_naf_send_test'</span><span style="color: #E1E4E8">, </span><span style="color: #F97583">function</span><span style="color: #E1E4E8"> () {</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">if</span><span style="color: #E1E4E8"> (</span><span style="color: #F97583">!</span><span style="color: #B392F0">current_user_can</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'manage_options'</span><span style="color: #E1E4E8">) </span><span style="color: #F97583">||</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">!</span><span style="color: #B392F0">check_admin_referer</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'naf_send_test_action'</span><span style="color: #E1E4E8">)) {</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #B392F0">wp_die</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'Not allowed.'</span><span style="color: #E1E4E8">);</span></span>
<span class="line"><span style="color: #E1E4E8">    }</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">    $to </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #B392F0">get_option</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'admin_email'</span><span style="color: #E1E4E8">);</span></span>
<span class="line"><span style="color: #E1E4E8">    $subject </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">'Test: Additional Admin Emails (Fan-out)'</span><span style="color: #E1E4E8">;</span></span>
<span class="line"><span style="color: #E1E4E8">    $message </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">"Hello!</span><span style="color: #79B8FF">\n\n</span><span style="color: #9ECBFF">This is a test email sent on "</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">.</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">date</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'c'</span><span style="color: #E1E4E8">) </span><span style="color: #F97583">.</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">".</span><span style="color: #79B8FF">\n</span><span style="color: #9ECBFF">Each additional recipient should receive a separate email (only triggers because it's addressed to the admin email)."</span><span style="color: #E1E4E8">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">    $ok </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #B392F0">wp_mail</span><span style="color: #E1E4E8">($to, $subject, $message);</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #B392F0">add_settings_error</span><span style="color: #E1E4E8">(</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #9ECBFF">'general'</span><span style="color: #E1E4E8">,</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #9ECBFF">'naf_test_mail'</span><span style="color: #E1E4E8">,</span></span>
<span class="line"><span style="color: #E1E4E8">        $ok </span><span style="color: #F97583">?</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">'✅ Test email sent.'</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">:</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">'❌ Test email failed.'</span><span style="color: #E1E4E8">,</span></span>
<span class="line"><span style="color: #E1E4E8">        $ok </span><span style="color: #F97583">?</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">'updated'</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">:</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">'error'</span></span>
<span class="line"><span style="color: #E1E4E8">    );</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #B392F0">wp_safe_redirect</span><span style="color: #E1E4E8">( </span><span style="color: #B392F0">admin_url</span><span style="color: #E1E4E8">(</span><span style="color: #9ECBFF">'options-general.php#additional_admin_emails'</span><span style="color: #E1E4E8">) );</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">exit</span><span style="color: #E1E4E8">;</span></span>
<span class="line"><span style="color: #E1E4E8">});</span></span>
<span class="line"></span>
```PHP

The above adds a new options in the settings > General Tab at the bottom called additional admin emails

![Ta additional admin emails](https://techarticles.co.uk/wp-content/uploads/2025/10/ta-additional-admin-emails.png)

Additional emails can be added as new lines, commas or semicolons and when you use the send test email option you should get the following test email to ALL email accounts

![Ta additional admin emails test](https://techarticles.co.uk/wp-content/uploads/2025/10/ta-additional-admin-emails-test.png)

**Warning:** This includes all admin emails will now be sent to the full round robin, if wpmail is sending an email to the admin email, it will be filtered and a copy will go to each additional admin address including the admin users password resets IF also a user account. i.e like below

![Ta additional admin emails test warning](https://techarticles.co.uk/wp-content/uploads/2025/10/ta-additional-admin-emails-test-warning.png)