From 09d9a3d7ba97552f822d8ab33cf76722c82fa85c Mon Sep 17 00:00:00 2001 From: Peter Wilson Date: Tue, 4 Oct 2022 03:45:37 +0000 Subject: [PATCH] Administration: Remove private delegation from list tables. Remove the private delegation from the following classes and function: * `WP_List_Table` * `WP_Application_Passwords_List_Table` * `WP_Comments_List_Table` * `WP_Links_List_Table` * `WP_Media_List_Table` * `WP_MS_Sites_List_Table` * `WP_MS_Themes_List_Table` * `WP_MS_Users_List_Table` * `WP_Plugin_Install_List_Table` * `WP_Plugins_List_Table` * `WP_Post_Comments_List_Table` * `WP_Posts_List_Table` * `WP_Terms_List_Table` * `WP_Theme_Install_List_Table` * `WP_Themes_List_Table` * `WP_Users_List_Table` * `_get_list_table()` This change is to reflect the reality that list tables are very, very, very widely used by extenders and backward compatibility therefore needs to be maintained. Introduces the filter `wp_list_table_class_name` within `_get_list_table()` to allow extenders to modify the list table returned for custom screens. Props audrasjb, birgire, costdev, desrosj, faison, johnbillion, jrbeilke, kurtpayne, milana_cap, miqrogroove, nacin, peterwilsoncc, scribu, sergeybiryukov, sirzooro, westonruter, wonderboymusic. Fixes #18449. git-svn-id: https://develop.svn.wordpress.org/trunk@54378 602fd350-edb4-49c9-b593-d223f7449a82 --- .../class-wp-application-passwords-list-table.php | 1 - .../includes/class-wp-comments-list-table.php | 1 - .../includes/class-wp-links-list-table.php | 1 - src/wp-admin/includes/class-wp-list-table.php | 1 - .../includes/class-wp-media-list-table.php | 1 - .../includes/class-wp-ms-sites-list-table.php | 1 - .../includes/class-wp-ms-themes-list-table.php | 1 - .../includes/class-wp-ms-users-list-table.php | 1 - .../class-wp-plugin-install-list-table.php | 1 - .../includes/class-wp-plugins-list-table.php | 1 - .../class-wp-post-comments-list-table.php | 1 - .../includes/class-wp-posts-list-table.php | 1 - .../includes/class-wp-terms-list-table.php | 1 - .../class-wp-theme-install-list-table.php | 1 - .../includes/class-wp-themes-list-table.php | 1 - .../includes/class-wp-users-list-table.php | 1 - src/wp-admin/includes/list-table.php | 15 ++++++++++++++- 17 files changed, 14 insertions(+), 17 deletions(-) diff --git a/src/wp-admin/includes/class-wp-application-passwords-list-table.php b/src/wp-admin/includes/class-wp-application-passwords-list-table.php index 88bafa3b00..98061a4cc6 100644 --- a/src/wp-admin/includes/class-wp-application-passwords-list-table.php +++ b/src/wp-admin/includes/class-wp-application-passwords-list-table.php @@ -11,7 +11,6 @@ * Class for displaying the list of application password items. * * @since 5.6.0 - * @access private * * @see WP_List_Table */ diff --git a/src/wp-admin/includes/class-wp-comments-list-table.php b/src/wp-admin/includes/class-wp-comments-list-table.php index 6c07dfc697..1b288786cd 100644 --- a/src/wp-admin/includes/class-wp-comments-list-table.php +++ b/src/wp-admin/includes/class-wp-comments-list-table.php @@ -11,7 +11,6 @@ * Core class used to implement displaying comments in a list table. * * @since 3.1.0 - * @access private * * @see WP_List_Table */ diff --git a/src/wp-admin/includes/class-wp-links-list-table.php b/src/wp-admin/includes/class-wp-links-list-table.php index 58ee4d6fff..ebfde174ed 100644 --- a/src/wp-admin/includes/class-wp-links-list-table.php +++ b/src/wp-admin/includes/class-wp-links-list-table.php @@ -11,7 +11,6 @@ * Core class used to implement displaying links in a list table. * * @since 3.1.0 - * @access private * * @see WP_List_Table */ diff --git a/src/wp-admin/includes/class-wp-list-table.php b/src/wp-admin/includes/class-wp-list-table.php index 0756601676..a043af12d1 100644 --- a/src/wp-admin/includes/class-wp-list-table.php +++ b/src/wp-admin/includes/class-wp-list-table.php @@ -11,7 +11,6 @@ * Base class for displaying a list of items in an ajaxified HTML table. * * @since 3.1.0 - * @access private */ #[AllowDynamicProperties] class WP_List_Table { diff --git a/src/wp-admin/includes/class-wp-media-list-table.php b/src/wp-admin/includes/class-wp-media-list-table.php index 05b2593861..9258b1dd1f 100644 --- a/src/wp-admin/includes/class-wp-media-list-table.php +++ b/src/wp-admin/includes/class-wp-media-list-table.php @@ -11,7 +11,6 @@ * Core class used to implement displaying media items in a list table. * * @since 3.1.0 - * @access private * * @see WP_List_Table */ diff --git a/src/wp-admin/includes/class-wp-ms-sites-list-table.php b/src/wp-admin/includes/class-wp-ms-sites-list-table.php index 1dc1458879..3d4583f1ec 100644 --- a/src/wp-admin/includes/class-wp-ms-sites-list-table.php +++ b/src/wp-admin/includes/class-wp-ms-sites-list-table.php @@ -11,7 +11,6 @@ * Core class used to implement displaying sites in a list table for the network admin. * * @since 3.1.0 - * @access private * * @see WP_List_Table */ diff --git a/src/wp-admin/includes/class-wp-ms-themes-list-table.php b/src/wp-admin/includes/class-wp-ms-themes-list-table.php index 70073e8130..faff7eb63a 100644 --- a/src/wp-admin/includes/class-wp-ms-themes-list-table.php +++ b/src/wp-admin/includes/class-wp-ms-themes-list-table.php @@ -11,7 +11,6 @@ * Core class used to implement displaying themes in a list table for the network admin. * * @since 3.1.0 - * @access private * * @see WP_List_Table */ diff --git a/src/wp-admin/includes/class-wp-ms-users-list-table.php b/src/wp-admin/includes/class-wp-ms-users-list-table.php index e99e92822f..fdaf762ccc 100644 --- a/src/wp-admin/includes/class-wp-ms-users-list-table.php +++ b/src/wp-admin/includes/class-wp-ms-users-list-table.php @@ -11,7 +11,6 @@ * Core class used to implement displaying users in a list table for the network admin. * * @since 3.1.0 - * @access private * * @see WP_List_Table */ diff --git a/src/wp-admin/includes/class-wp-plugin-install-list-table.php b/src/wp-admin/includes/class-wp-plugin-install-list-table.php index fea5c8388c..e6a709e4d0 100644 --- a/src/wp-admin/includes/class-wp-plugin-install-list-table.php +++ b/src/wp-admin/includes/class-wp-plugin-install-list-table.php @@ -11,7 +11,6 @@ * Core class used to implement displaying plugins to install in a list table. * * @since 3.1.0 - * @access private * * @see WP_List_Table */ diff --git a/src/wp-admin/includes/class-wp-plugins-list-table.php b/src/wp-admin/includes/class-wp-plugins-list-table.php index b3ffa5bc6c..cad2df794c 100644 --- a/src/wp-admin/includes/class-wp-plugins-list-table.php +++ b/src/wp-admin/includes/class-wp-plugins-list-table.php @@ -11,7 +11,6 @@ * Core class used to implement displaying installed plugins in a list table. * * @since 3.1.0 - * @access private * * @see WP_List_Table */ diff --git a/src/wp-admin/includes/class-wp-post-comments-list-table.php b/src/wp-admin/includes/class-wp-post-comments-list-table.php index 29dc286310..4454a77fe7 100644 --- a/src/wp-admin/includes/class-wp-post-comments-list-table.php +++ b/src/wp-admin/includes/class-wp-post-comments-list-table.php @@ -11,7 +11,6 @@ * Core class used to implement displaying post comments in a list table. * * @since 3.1.0 - * @access private * * @see WP_Comments_List_Table */ diff --git a/src/wp-admin/includes/class-wp-posts-list-table.php b/src/wp-admin/includes/class-wp-posts-list-table.php index 97525bb7ef..067dae49e7 100644 --- a/src/wp-admin/includes/class-wp-posts-list-table.php +++ b/src/wp-admin/includes/class-wp-posts-list-table.php @@ -11,7 +11,6 @@ * Core class used to implement displaying posts in a list table. * * @since 3.1.0 - * @access private * * @see WP_List_Table */ diff --git a/src/wp-admin/includes/class-wp-terms-list-table.php b/src/wp-admin/includes/class-wp-terms-list-table.php index c43ec62689..1d4b57cca2 100644 --- a/src/wp-admin/includes/class-wp-terms-list-table.php +++ b/src/wp-admin/includes/class-wp-terms-list-table.php @@ -11,7 +11,6 @@ * Core class used to implement displaying terms in a list table. * * @since 3.1.0 - * @access private * * @see WP_List_Table */ diff --git a/src/wp-admin/includes/class-wp-theme-install-list-table.php b/src/wp-admin/includes/class-wp-theme-install-list-table.php index a02767f277..3e5c03433b 100644 --- a/src/wp-admin/includes/class-wp-theme-install-list-table.php +++ b/src/wp-admin/includes/class-wp-theme-install-list-table.php @@ -11,7 +11,6 @@ * Core class used to implement displaying themes to install in a list table. * * @since 3.1.0 - * @access private * * @see WP_Themes_List_Table */ diff --git a/src/wp-admin/includes/class-wp-themes-list-table.php b/src/wp-admin/includes/class-wp-themes-list-table.php index 590c242cb7..7fb72e6bb7 100644 --- a/src/wp-admin/includes/class-wp-themes-list-table.php +++ b/src/wp-admin/includes/class-wp-themes-list-table.php @@ -11,7 +11,6 @@ * Core class used to implement displaying installed themes in a list table. * * @since 3.1.0 - * @access private * * @see WP_List_Table */ diff --git a/src/wp-admin/includes/class-wp-users-list-table.php b/src/wp-admin/includes/class-wp-users-list-table.php index c19173428e..4b6c17ab99 100644 --- a/src/wp-admin/includes/class-wp-users-list-table.php +++ b/src/wp-admin/includes/class-wp-users-list-table.php @@ -11,7 +11,6 @@ * Core class used to implement displaying users in a list table. * * @since 3.1.0 - * @access private * * @see WP_List_Table */ diff --git a/src/wp-admin/includes/list-table.php b/src/wp-admin/includes/list-table.php index 43d00e6958..1e2c190c80 100644 --- a/src/wp-admin/includes/list-table.php +++ b/src/wp-admin/includes/list-table.php @@ -10,7 +10,6 @@ /** * Fetches an instance of a WP_List_Table class. * - * @access private * @since 3.1.0 * * @global string $hook_suffix @@ -58,6 +57,20 @@ function _get_list_table( $class_name, $args = array() ) { $args['screen'] = null; } + /** + * Filters the list table class to instantiate. + * + * @since 6.1.0 + * + * @param string $class_name The list table class to use. + * @param array $args An array containing _get_list_table() arguments. + */ + $custom_class_name = apply_filters( 'wp_list_table_class_name', $class_name, $args ); + + if ( is_string( $custom_class_name ) && class_exists( $custom_class_name ) ) { + $class_name = $custom_class_name; + } + return new $class_name( $args ); }