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.
Opens WPIDE on
Code
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 add this snippet
- Install WPIDE on your WordPress site (it is free) and open Code Snippets.
- Use snippet above adds it from the library in one click. Or copy the code into a new snippet with the same code type.
- It is added inactive: review the code and settings, then switch it on.