From 5c836585d1f3ff4289302f696abebda703a60d4a Mon Sep 17 00:00:00 2001 From: whyisjake Date: Tue, 21 Jul 2020 00:29:02 +0000 Subject: [PATCH] Comments: Don't show the filter/pagination actions if there are no comments to list. It doesn't make sense to be able to filter the comments list table when there are are no (trashed/spam) comments available. Fixes #40188. Props swissspidy, Jim_Panse, menakas, akbarhusen429, dinhtungdu, birgire, SergeyBiryukov, davidbaumwald, rebasaurus, whyisjake. Built from https://develop.svn.wordpress.org/trunk@48521 git-svn-id: http://core.svn.wordpress.org/trunk@48283 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- .../includes/class-wp-comments-list-table.php | 96 +++++++++++++------ wp-includes/version.php | 2 +- 2 files changed, 67 insertions(+), 31 deletions(-) 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.