Using WordPress ‘ms_site_check’ PHP filter

The ms_site_check WordPress PHP filter allows you to override the default blog status check in a multisite network.

Usage

add_filter( 'ms_site_check', 'custom_ms_site_check' );

function custom_ms_site_check( $check ) {
    // your custom code here
    return $check;
}

Parameters

  • $check (bool|null): Whether to skip the blog status check. Default null.

More information

See WordPress Developer Resources: ms_site_check

Examples

Bypass blog status check

Bypass the default blog status check for all sites in a multisite network.

add_filter( 'ms_site_check', '__return_true' );

Allow specific blog ID to bypass status check

Only bypass the blog status check for a specific blog ID (e.g., 5).

add_filter( 'ms_site_check', 'allow_blog_id_5', 10, 1 );

function allow_blog_id_5( $check ) {
    if ( get_current_blog_id() == 5 ) {
        return true;
    }
    return $check;
}

Disable blog status check for specific user role

Disable the blog status check for users with the “editor” role.

add_filter( 'ms_site_check', 'disable_check_for_editor', 10, 1 );

function disable_check_for_editor( $check ) {
    if ( current_user_can( 'editor' ) ) {
        return true;
    }
    return $check;
}

Disable blog status check for specific user

Disable the blog status check for a specific user by their ID (e.g., 10).

add_filter( 'ms_site_check', 'disable_check_for_user_10', 10, 1 );

function disable_check_for_user_10( $check ) {
    if ( get_current_user_id() == 10 ) {
        return true;
    }
    return $check;
}

Custom blog status check

Create a custom blog status check based on a custom meta value.

add_filter( 'ms_site_check', 'custom_blog_status_check', 10, 1 );

function custom_blog_status_check( $check ) {
    $blog_id = get_current_blog_id();
    $custom_status = get_blog_option( $blog_id, 'custom_blog_status', 'active' );

    if ( $custom_status == 'inactive' ) {
        return false;
    }
    return $check;
}