25% off ProSNIPC25OFF

Maintenance Mode Page

Shows a branded maintenance page to visitors while admins can still browse normally; title and message configurable via Settings > General.

Module2 parts · by SnipCraft

PHPLogic

php
<?php
add_action( 'template_redirect', function () {
    if ( is_admin() || current_user_can( 'manage_options' ) || ( defined( 'WP_CLI' ) && WP_CLI ) ) {
        return;
    }
    if ( '1' !== get_option( 'scseed_maint_enabled', '0' ) ) {
        return;
    }
    $title   = get_option( 'scseed_maint_title',   'Site Under Maintenance' );
    $message = get_option( 'scseed_maint_message', 'We are performing scheduled maintenance. We will be back shortly.' );
    status_header( 503 );
    header( 'Retry-After: 3600' );
    nocache_headers();
    get_header();
    echo '<div class="scseed-maint-wrap"><div class="scseed-maint-inner">';
    echo '<h1 class="scseed-maint-title">' . esc_html( $title )   . '</h1>';
    echo '<p class="scseed-maint-msg">'    . esc_html( $message ) . '</p>';
    echo '</div></div>';
    get_footer();
    exit;
} );

if ( ! function_exists( 'scseed_maint_register_settings' ) ) {
    function scseed_maint_register_settings() {
        register_setting( 'general', 'scseed_maint_enabled', [ 'sanitize_callback' => 'sanitize_text_field' ] );
        register_setting( 'general', 'scseed_maint_title',   [ 'sanitize_callback' => 'sanitize_text_field' ] );
        register_setting( 'general', 'scseed_maint_message', [ 'sanitize_callback' => 'sanitize_textarea_field' ] );
        add_settings_section( 'scseed_maint_section', 'Maintenance Mode', null, 'general' );
        add_settings_field( 'scseed_maint_enabled', 'Enable Maintenance Mode',
            function () {
                $v = get_option( 'scseed_maint_enabled', '0' );
                echo '<input type="checkbox" name="scseed_maint_enabled" value="1"' . checked( '1', $v, false ) . '>';
            }, 'general', 'scseed_maint_section' );
        add_settings_field( 'scseed_maint_title', 'Maintenance Title',
            function () {
                $v = get_option( 'scseed_maint_title', 'Site Under Maintenance' );
                echo '<input type="text" name="scseed_maint_title" value="' . esc_attr( $v ) . '" class="regular-text">';
            }, 'general', 'scseed_maint_section' );
        add_settings_field( 'scseed_maint_message', 'Maintenance Message',
            function () {
                $v = get_option( 'scseed_maint_message', 'We are performing scheduled maintenance. We will be back shortly.' );
                echo '<textarea name="scseed_maint_message" class="large-text" rows="3">' . esc_textarea( $v ) . '</textarea>';
            }, 'general', 'scseed_maint_section' );
    }
}
add_action( 'admin_init', 'scseed_maint_register_settings' );

CSSStyles

css
.scseed-maint-wrap {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 60vh;
    padding: 40px 20px;
    text-align: center;
}
.scseed-maint-inner { max-width: 520px; }
.scseed-maint-title { font-size: 30px; font-weight: 700; margin: 0 0 16px; }
.scseed-maint-msg   { font-size: 17px; color: #555; line-height: 1.6; }
#admin#ux#settings#maintenance