I need the site to be in maintenance mode while I complete a cron job within a plugin.
I have solved this be creating a ".maintenance" file in my plugin directory and using the following code in my cron job:
$plugin_dir = ABSPATH . 'wp-content/plugins/my_plugin/';
$base_dir = ABSPATH;
$static_maintenance_file = $plugin_dir . '.maintenance';
$new_maintenance_file = $base_dir . '.maintenance';
copy( $static_maintenance_file, $new_maintenance_file );
// do the business end of the cron job
unlink( $new_maintenance_file );
It works as designed. However, it feels a little dirty. Is there anything particularly wrong with the method that I used? And is there a better, more WP friendly way of accomplishing this?