The enable_maintenance_mode WordPress PHP filter allows you to control the maintenance mode of your website.
Usage
add_filter('enable_maintenance_mode', 'your_custom_function', 10, 2); function your_custom_function($enable_checks, $upgrading) { // your custom code here return $enable_checks; }
Parameters
$enable_checks (bool)
– Whether to enable maintenance mode. Default is true.$upgrading (int)
– The timestamp set in the .maintenance file.
More information
See WordPress Developer Resources: enable_maintenance_mode
Examples
Disable maintenance mode for administrators
Allow administrators to access the site while it’s in maintenance mode.
add_filter('enable_maintenance_mode', 'disable_maintenance_for_admins', 10, 2); function disable_maintenance_for_admins($enable_checks, $upgrading) { if (current_user_can('administrator')) { return false; } return $enable_checks; }
Allow specific IP addresses
Allow users with specific IP addresses to access the site during maintenance mode.
add_filter('enable_maintenance_mode', 'allow_specific_ips', 10, 2); function allow_specific_ips($enable_checks, $upgrading) { $allowed_ips = array('192.0.2.1', '192.0.2.2'); if (in_array($_SERVER['REMOTE_ADDR'], $allowed_ips)) { return false; } return $enable_checks; }
Schedule maintenance mode
Enable maintenance mode only during specific hours of the day.
add_filter('enable_maintenance_mode', 'schedule_maintenance_mode', 10, 2); function schedule_maintenance_mode($enable_checks, $upgrading) { $current_hour = date('H'); if ($current_hour >= 1 && $current_hour <= 5) { return true; } return $enable_checks; }
Disable maintenance mode for specific pages
Disable maintenance mode for specific pages on your website.
add_filter('enable_maintenance_mode', 'disable_maintenance_for_specific_pages', 10, 2); function disable_maintenance_for_specific_pages($enable_checks, $upgrading) { $allowed_pages = array('about', 'contact'); $current_page = basename($_SERVER['REQUEST_URI']); if (in_array($current_page, $allowed_pages)) { return false; } return $enable_checks; }
Enable maintenance mode for specific user roles
Enable maintenance mode only for users with specific roles.
add_filter('enable_maintenance_mode', 'enable_maintenance_for_specific_roles', 10, 2); function enable_maintenance_for_specific_roles($enable_checks, $upgrading) { if (current_user_can('subscriber')) { return true; } return $enable_checks; }