Using WordPress ‘pre_get_main_site_id’ PHP filter

pre_get_main_site_id is a WordPress PHP filter that allows you to modify the main site ID of a WordPress Multisite network.

Usage

add_filter('pre_get_main_site_id', 'your_custom_function', 10, 2);
function your_custom_function($main_site_id, $network) {
    // your custom code here
    return $main_site_id;
}

Parameters

  • $main_site_id (int|null) – The main site ID. If a positive integer is returned, it is interpreted as the main site ID.
  • $network (WP_Network) – The network object for which the main site was detected.

More information

See WordPress Developer Resources: pre_get_main_site_id

Examples

Change the main site ID

Change the main site ID to a different ID.

add_filter('pre_get_main_site_id', 'change_main_site_id', 10, 2);
function change_main_site_id($main_site_id, $network) {
    // Set the new main site ID
    $new_main_site_id = 5;
    return $new_main_site_id;
}

Set the main site ID based on the network

Set the main site ID based on the network ID.

add_filter('pre_get_main_site_id', 'set_main_site_based_on_network', 10, 2);
function set_main_site_based_on_network($main_site_id, $network) {
    // Set the main site ID based on the network ID
    if ($network->id == 2) {
        return 10;
    }
    return $main_site_id;
}

Set the main site ID conditionally

Set the main site ID based on a custom condition.

add_filter('pre_get_main_site_id', 'conditional_main_site_id', 10, 2);
function conditional_main_site_id($main_site_id, $network) {
    // Set the main site ID if the current user is an administrator
    if (current_user_can('administrator')) {
        return 3;
    }
    return $main_site_id;
}

Log the main site ID

Log the main site ID in a text file.

add_filter('pre_get_main_site_id', 'log_main_site_id', 10, 2);
function log_main_site_id($main_site_id, $network) {
    // Log the main site ID
    error_log("Main Site ID: " . $main_site_id . "\n", 3, "/path/to/your_log_file.txt");
    return $main_site_id;
}

Display a notice with the main site ID

Display an admin notice with the main site ID.

add_filter('pre_get_main_site_id', 'display_main_site_id_notice', 10, 2);
function display_main_site_id_notice($main_site_id, $network) {
    // Display an admin notice with the main site ID
    add_action('admin_notices', function() use ($main_site_id) {
        echo '<div class="notice notice-info"><p>Main Site ID: ' . $main_site_id . '</p></div>';
    });
    return $main_site_id;
}