diff --git a/wp-admin/includes/class-wp-comments-list-table.php b/wp-admin/includes/class-wp-comments-list-table.php
index 5f0d373547..b76ad9162a 100644
--- a/wp-admin/includes/class-wp-comments-list-table.php
+++ b/wp-admin/includes/class-wp-comments-list-table.php
@@ -387,43 +387,24 @@ class WP_Comments_List_Table extends WP_List_Table {
if ( ! isset( $has_items ) ) {
$has_items = $this->has_items();
}
- ?>
-
- ';
if ( 'top' === $which ) {
- ?>
-
-
- comment_status_dropdown( $comment_type );
/**
* Fires just before the Filter submit button for comment types.
*
* @since 3.5.0
*/
do_action( 'restrict_manage_comments' );
- submit_button( __( 'Filter' ), '', 'filter_action', false, array( 'id' => 'post-query-submit' ) );
+
+ $output = ob_get_clean();
+
+ if ( ! empty( $output ) && $this->has_items() ) {
+ echo $output;
+ submit_button( esc_html__( 'Filter' ), '', 'filter_action', false, array( 'id' => 'post-query-submit' ) );
+ }
}
if ( ( 'spam' === $comment_status || 'trash' === $comment_status ) && current_user_can( 'moderate_comments' ) && $has_items ) {
@@ -480,6 +461,55 @@ class WP_Comments_List_Table extends WP_List_Table {
return $columns;
}
+ /**
+ * Displays a comment status drop-down for filtering on the Comments list table.
+ *
+ * @since 5.5.0
+ *
+ * @param string $comment_type The current comment type slug.
+ */
+ protected function comment_status_dropdown( $comment_type ) {
+ /**
+ * Filters the comment types dropdown menu.
+ *
+ * @since 2.7.0
+ *
+ * @param array $comment_types An array of comment types. Accepts 'Comments', 'Pings'.
+ */
+ $comment_types = apply_filters(
+ 'admin_comment_types_dropdown',
+ array(
+ 'comment' => esc_html__( 'Comments' ),
+ 'pings' => esc_html__( 'Pings' ),
+ )
+ );
+
+ if ( $comment_types && is_array( $comment_types ) ) {
+ printf( '', esc_html__( 'Filter by comment type' ) );
+
+ echo '';
+ }
+ }
+
/**
* @return array
*/
@@ -511,8 +541,14 @@ class WP_Comments_List_Table extends WP_List_Table {
*/
public function display() {
wp_nonce_field( 'fetch-list-' . get_class( $this ), '_ajax_fetch_list_nonce' );
+ static $has_items;
- $this->display_tablenav( 'top' );
+ if ( ! isset( $has_items ) ) {
+ $has_items = $this->has_items();
+ if ( $has_items ) {
+ $this->display_tablenav( 'top' );
+ }
+ }
$this->screen->render_screen_reader_content( 'heading_list' );
diff --git a/wp-includes/version.php b/wp-includes/version.php
index 26421ac0dc..31be2fa65c 100644
--- a/wp-includes/version.php
+++ b/wp-includes/version.php
@@ -13,7 +13,7 @@
*
* @global string $wp_version
*/
-$wp_version = '5.5-beta2-48520';
+$wp_version = '5.5-beta2-48521';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.