# Send All Emails to One Address on Staging Sites

> On development and staging sites, delivers every email to a single test address instead of real customers and users, and notes the original recipient in the subject.

- Type: PHP
- Runs: Run everywhere
- Category: [Email](https://wpide.com/library/category/email/)
- Tags: email, staging, development, safety
- Author: WPIDE Team
- Installs: 0
- Updated: 2026-10-28
- Page: https://wpide.com/library/email-redirect-on-staging/

## Code

```php
add_filter( 'wp_mail', function ( $atts ) {
    $test_address = ''; // Inbox that receives every email on non-production sites.

    if ( 'production' === wp_get_environment_type() || ! is_email( $test_address ) ) {
        return $atts;
    }

    $original        = implode( ', ', (array) $atts['to'] );
    $atts['to']      = $test_address;
    $atts['subject'] = '[To: ' . $original . '] ' . $atts['subject'];

    // Drop CC and BCC headers so nobody else gets a copy.
    if ( ! empty( $atts['headers'] ) ) {
        $headers         = is_array( $atts['headers'] ) ? $atts['headers'] : explode( "\n", str_replace( "\r\n", "\n", (string) $atts['headers'] ) );
        $atts['headers'] = array_values( array_filter( $headers, function ( $header ) {
            return ! preg_match( '/^\s*(cc|bcc)\s*:/i', (string) $header );
        } ) );
    }

    return $atts;
}, 999 );
```

## Notes

Uses wp_get_environment_type(), so set WP_ENVIRONMENT_TYPE to staging or development in wp-config.php. Production sites are not affected.

## How to use it

Install the free WPIDE plugin (https://wordpress.org/plugins/wpide/), find "Send All Emails to One Address on Staging Sites" in its snippet library and add it in one click; or create a new PHP snippet in WPIDE (or any code snippets plugin) and paste the code above. More snippets: https://wpide.com/library/
