Using WordPress ‘display_site_states’ PHP filter

The display_site_states WordPress PHP filter allows you to modify the default site display states for items in the Sites list table.

Usage

add_filter('display_site_states', 'custom_site_states', 10, 2);
function custom_site_states($site_states, $site) {
  // your custom code here
  return $site_states;
}

Parameters

  • $site_states (string[]): An array of site states. Default values are ‘Main’, ‘Archived’, ‘Mature’, ‘Spam’, and ‘Deleted’.
  • $site (WP_Site): The current site object.

More information

See WordPress Developer Resources: display_site_states

Examples

Add a custom site state

Add a new custom site state called ‘Under Construction’:

add_filter('display_site_states', 'add_under_construction_state', 10, 2);
function add_under_construction_state($site_states, $site) {
  if (get_blog_option($site->blog_id, 'under_construction') == '1') {
    $site_states[] = 'Under Construction';
  }
  return $site_states;
}

Remove the ‘Mature’ site state

Remove the ‘Mature’ site state from the list of site states:

add_filter('display_site_states', 'remove_mature_site_state', 10, 2);
function remove_mature_site_state($site_states, $site) {
  $key = array_search('Mature', $site_states);
  if ($key !== false) {
    unset($site_states[$key]);
  }
  return $site_states;
}

Rename the ‘Main’ site state

Change the name of the ‘Main’ site state to ‘Primary’:

add_filter('display_site_states', 'rename_main_site_state', 10, 2);
function rename_main_site_state($site_states, $site) {
  $key = array_search('Main', $site_states);
  if ($key !== false) {
    $site_states[$key] = 'Primary';
  }
  return $site_states;
}

Add a custom site state based on a post count

Add a custom site state called ‘Low Content’ for sites with less than 10 published posts:

add_filter('display_site_states', 'add_low_content_state', 10, 2);
function add_low_content_state($site_states, $site) {
  switch_to_blog($site->blog_id);
  $post_count = wp_count_posts()->publish;
  restore_current_blog();

  if ($post_count < 10) {
    $site_states[] = 'Low Content';
  }
  return $site_states;
}

Modify site states based on custom conditions

Change the ‘Archived’ state to ‘On Hold’ if the site is less than 30 days old:

add_filter('display_site_states', 'modify_site_states_based_on_age', 10, 2);
function modify_site_states_based_on_age($site_states, $site) {
  $site_age = (time() - strtotime($site->registered)) / DAY_IN_SECONDS;
  if ($site_age < 30 && in_array('Archived', $site_states)) {
    $key = array_search('Archived', $site_states);
    $site_states[$key] = 'On Hold';
  }
  return $site_states;
}