Multisite/Sites: Add links to filter websites by status.
This commit brings the Network-Admin Sites list page up-to-speed with other similar list-table powered pages, by adding links to filter the results by Site Status. Includes a single unit test for the newly introduced `wp_count_sites()` multisite function, named to match the `wp_count_` function pattern from other list tables. Fixes #37392. Props mnelson4, spacedmonkey, pbiron. git-svn-id: https://develop.svn.wordpress.org/trunk@46251 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
aba005be39
commit
f2b03e208a
@ -369,6 +369,8 @@ if ( isset( $_REQUEST['s'] ) && strlen( $_REQUEST['s'] ) ) {
|
|||||||
|
|
||||||
<hr class="wp-header-end">
|
<hr class="wp-header-end">
|
||||||
|
|
||||||
|
<?php $wp_list_table->views(); ?>
|
||||||
|
|
||||||
<?php echo $msg; ?>
|
<?php echo $msg; ?>
|
||||||
|
|
||||||
<form method="get" id="ms-search" class="wp-clearfix">
|
<form method="get" id="ms-search" class="wp-clearfix">
|
||||||
|
@ -853,3 +853,42 @@ function _update_posts_count_on_transition_post_status( $new_status, $old_status
|
|||||||
|
|
||||||
update_posts_count();
|
update_posts_count();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Count number of sites grouped by site status.
|
||||||
|
*
|
||||||
|
* @since 5.3.0
|
||||||
|
*
|
||||||
|
* @param int $network_id The network to get counts for. Default is the current network id.
|
||||||
|
* @return array Includes a grand total 'all' and an array of counts indexed by
|
||||||
|
* status strings: public, archived, mature, spam, deleted.
|
||||||
|
*/
|
||||||
|
function wp_count_sites( $network_id = null ) {
|
||||||
|
if ( empty( $network_id ) ) {
|
||||||
|
$network_id = get_current_network_id();
|
||||||
|
}
|
||||||
|
|
||||||
|
$counts = array();
|
||||||
|
$args = array(
|
||||||
|
'network_id' => $network_id,
|
||||||
|
'number' => 1,
|
||||||
|
'fields' => 'ids',
|
||||||
|
'no_found_rows' => false,
|
||||||
|
);
|
||||||
|
|
||||||
|
$q = new WP_Site_Query( $args );
|
||||||
|
$counts['all'] = $q->found_sites;
|
||||||
|
|
||||||
|
$_args = $args;
|
||||||
|
$statuses = array( 'public', 'archived', 'mature', 'spam', 'deleted' );
|
||||||
|
|
||||||
|
foreach ( $statuses as $status ) {
|
||||||
|
$_args = $args;
|
||||||
|
$_args[ $status ] = 1;
|
||||||
|
|
||||||
|
$q = new WP_Site_Query( $_args );
|
||||||
|
$counts[ $status ] = $q->found_sites;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $counts;
|
||||||
|
}
|
||||||
|
@ -34,6 +34,48 @@ if ( is_multisite() ) :
|
|||||||
$reg_blog = $wpdb->get_col( $wpdb->prepare( "SELECT email FROM {$wpdb->registration_log} WHERE {$wpdb->registration_log}.blog_id = 1 AND IP LIKE %s", $ip ) );
|
$reg_blog = $wpdb->get_col( $wpdb->prepare( "SELECT email FROM {$wpdb->registration_log} WHERE {$wpdb->registration_log}.blog_id = 1 AND IP LIKE %s", $ip ) );
|
||||||
$this->assertEquals( $user->user_email, $reg_blog[ count( $reg_blog ) - 1 ] );
|
$this->assertEquals( $user->user_email, $reg_blog[ count( $reg_blog ) - 1 ] );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ticket 37392
|
||||||
|
*/
|
||||||
|
function test_wp_count_sites() {
|
||||||
|
// create a random number of sites with each status.
|
||||||
|
$site_ids = array(
|
||||||
|
'public' => self::factory()->blog->create_many(
|
||||||
|
random_int( 0, 5 ),
|
||||||
|
array( 'meta' => array( 'public' => 1 ) )
|
||||||
|
),
|
||||||
|
'archived' => self::factory()->blog->create_many(
|
||||||
|
random_int( 0, 5 ),
|
||||||
|
array( 'meta' => array( 'archived' => 1 ) )
|
||||||
|
),
|
||||||
|
'mature' => self::factory()->blog->create_many(
|
||||||
|
random_int( 0, 5 ),
|
||||||
|
array( 'meta' => array( 'mature' => 1 ) )
|
||||||
|
),
|
||||||
|
'spam' => self::factory()->blog->create_many(
|
||||||
|
random_int( 0, 5 ),
|
||||||
|
array( 'meta' => array( 'spam' => 1 ) )
|
||||||
|
),
|
||||||
|
'deleted' => self::factory()->blog->create_many(
|
||||||
|
random_int( 0, 5 ),
|
||||||
|
array( 'meta' => array( 'deleted' => 1 ) )
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
$counts = wp_count_sites();
|
||||||
|
|
||||||
|
$counts_by_status = array_map( 'count', $site_ids );
|
||||||
|
$expected = array_merge(
|
||||||
|
array( 'all' => array_sum( $counts_by_status ) ),
|
||||||
|
$counts_by_status
|
||||||
|
);
|
||||||
|
// add 1 to all & public for the main site.
|
||||||
|
$expected['all'] += 1;
|
||||||
|
$expected['public'] += 1;
|
||||||
|
|
||||||
|
$this->assertEquals( $expected, $counts );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
endif;
|
endif;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user