Using WordPress ‘auto_core_update_send_email’ PHP filter

The auto_core_update_send_email WordPress PHP filter allows you to control whether an email should be sent following an automatic background core update.


add_filter('auto_core_update_send_email', 'your_custom_function', 10, 4);

function your_custom_function($send, $type, $core_update, $result) {
    // your custom code here
    return $send;


  • $send (bool) – Whether to send the email. Default is true.
  • $type (string) – The type of email to send. Can be one of ‘success’, ‘fail’, ‘critical’.
  • $core_update (object) – The update offer that was attempted.
  • $result (mixed) – The result for the core update. Can be WP_Error.

More information

See WordPress Developer Resources: auto_core_update_send_email


Disable all core update emails

Disable all automatic core update emails regardless of their type.

add_filter('auto_core_update_send_email', '__return_false');

Send only critical update emails

Send automatic core update emails only for critical updates.

add_filter('auto_core_update_send_email', 'send_only_critical_emails', 10, 2);

function send_only_critical_emails($send, $type) {
    return $type === 'critical';

Disable update emails for specific versions

Disable automatic core update emails for specific WordPress versions.

add_filter('auto_core_update_send_email', 'disable_specific_version_emails', 10, 3);

function disable_specific_version_emails($send, $type, $core_update) {
    if ($core_update->current === '5.9.2') {
        return false;
    return $send;

Log update results instead of sending emails

Log automatic core update results instead of sending emails.

add_filter('auto_core_update_send_email', 'log_update_results', 10, 4);

function log_update_results($send, $type, $core_update, $result) {
    error_log("Core update: $type, Version: {$core_update->current}, Result: " . json_encode($result));
    return false;

Change email behavior based on update result

Send email only when update failed or had a critical error.

add_filter('auto_core_update_send_email', 'send_on_fail_or_critical', 10, 4);

function send_on_fail_or_critical($send, $type, $core_update, $result) {
    if (is_wp_error($result) || $type === 'critical') {
        return true;
    return false;