How to programmatically put wordpress in maintenance mode

I used this code for several years now:

add_action('wp_loaded', 'check_maintenance_mode');
function check_maintenance_mode(){
  global $pagenow;
  if(defined('IN_MAINTENANCE')  IN_MAINTENANCE  $pagenow !== 'wp-login.php'  !is_user_logged_in()){
    header('HTTP/1.1 Service Unavailable', true, 503);
    header('Content-Type: text/html; charset=utf-8');
    if(file_exists(WP_CONTENT_DIR . '/maintenance.php')){
      require_once( WP_CONTENT_DIR . '/maintenance.php' );
    }
    die();
  }
}

The IN_MAINTENANCE and WP_CONTENT_DIR constants are initialised and setted by me.

Anyway, this code suddenly stopped to work. The website is always visible even with IN_MAINTENANCE setted to true. By logging from the function, I can confirm that all the conditions are true and it really throw the headers and require the maintenance.php file, but it doesn't.

Any idea?

Topic maintenance Wordpress

Category Web

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.