From ed11103f39e2a5736caf09eb9d76bb6711702c04 Mon Sep 17 00:00:00 2001 From: "K. Adam White" Date: Tue, 8 Oct 2019 13:43:02 +0000 Subject: [PATCH] REST API: Ensure rest_controller instantiates the post type's declared REST controller class. Ensures that the ::get_rest_controller() method will always return an instanceof the expected controller class, or null. Removes unused private static property $post_type_controllers. Props dlh, TimothyBlynJacobs. Fixes #45677. Built from https://develop.svn.wordpress.org/trunk@46435 git-svn-id: http://core.svn.wordpress.org/trunk@46233 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/class-wp-post-type.php | 6 +++++- .../endpoints/class-wp-rest-posts-controller.php | 9 --------- wp-includes/version.php | 2 +- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/wp-includes/class-wp-post-type.php b/wp-includes/class-wp-post-type.php index 0099515050..bb148067c0 100644 --- a/wp-includes/class-wp-post-type.php +++ b/wp-includes/class-wp-post-type.php @@ -343,7 +343,7 @@ final class WP_Post_Type { * @since 5.3.0 * @var WP_REST_Controller $rest_controller */ - private $rest_controller; + public $rest_controller; /** * Constructor. @@ -722,6 +722,10 @@ final class WP_Post_Type { $this->rest_controller = new $class( $this->name ); } + if ( ! ( $this->rest_controller instanceof $class ) ) { + return null; + } + return $this->rest_controller; } } diff --git a/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php b/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php index 4a00336e34..2b71a76cb0 100644 --- a/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php +++ b/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php @@ -15,15 +15,6 @@ * @see WP_REST_Controller */ class WP_REST_Posts_Controller extends WP_REST_Controller { - - /** - * Instances of post type controllers keyed by post type. - * - * @since 5.3.0 - * @var WP_REST_Controller[] - */ - private static $post_type_controllers = array(); - /** * Post type. * diff --git a/wp-includes/version.php b/wp-includes/version.php index e3146c9539..3cfbb17022 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -13,7 +13,7 @@ * * @global string $wp_version */ -$wp_version = '5.3-beta2-46434'; +$wp_version = '5.3-beta2-46435'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.