mirror of
git://develop.git.wordpress.org/
synced 2025-03-21 20:40:44 +01:00
Widgets REST API: Fix non-multi widgets not appearing in wp_inactive_widgets
Registered widgets that do not extend WP_Widget should appear in the wp_inactive_widgets sidebar by default. Having the widgets REST API call retrieve_widgets() before serving any request ensures that this will happen. This is a similar fix to [51235]. Fixes #53534. Props zieladam, timothyblynjacobs. git-svn-id: https://develop.svn.wordpress.org/trunk@51248 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
15d4c97f1e
commit
fba7649418
@ -109,6 +109,8 @@ class WP_REST_Widgets_Controller extends WP_REST_Controller {
|
||||
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
|
||||
*/
|
||||
public function get_items( $request ) {
|
||||
retrieve_widgets();
|
||||
|
||||
$prepared = array();
|
||||
|
||||
foreach ( wp_get_sidebars_widgets() as $sidebar_id => $widget_ids ) {
|
||||
@ -149,6 +151,8 @@ class WP_REST_Widgets_Controller extends WP_REST_Controller {
|
||||
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
|
||||
*/
|
||||
public function get_item( $request ) {
|
||||
retrieve_widgets();
|
||||
|
||||
$widget_id = $request['id'];
|
||||
$sidebar_id = wp_find_widgets_sidebar( $widget_id );
|
||||
|
||||
@ -230,6 +234,8 @@ class WP_REST_Widgets_Controller extends WP_REST_Controller {
|
||||
public function update_item( $request ) {
|
||||
global $wp_widget_factory;
|
||||
|
||||
retrieve_widgets();
|
||||
|
||||
$widget_id = $request['id'];
|
||||
$sidebar_id = wp_find_widgets_sidebar( $widget_id );
|
||||
|
||||
@ -291,6 +297,8 @@ class WP_REST_Widgets_Controller extends WP_REST_Controller {
|
||||
public function delete_item( $request ) {
|
||||
global $wp_registered_widget_updates;
|
||||
|
||||
retrieve_widgets();
|
||||
|
||||
$widget_id = $request['id'];
|
||||
$sidebar_id = wp_find_widgets_sidebar( $widget_id );
|
||||
|
||||
|
@ -95,20 +95,14 @@ class WP_Test_REST_Widgets_Controller extends WP_Test_REST_Controller_Testcase {
|
||||
}
|
||||
|
||||
public function setUp() {
|
||||
global $wp_registered_widgets, $wp_registered_sidebars, $_wp_sidebars_widgets, $wp_widget_factory;
|
||||
global $wp_widget_factory;
|
||||
|
||||
parent::setUp();
|
||||
|
||||
wp_set_current_user( self::$admin_id );
|
||||
|
||||
// Unregister all widgets and sidebars.
|
||||
$wp_registered_widgets = array();
|
||||
$wp_registered_sidebars = array();
|
||||
$_wp_sidebars_widgets = array();
|
||||
update_option( 'sidebars_widgets', array() );
|
||||
|
||||
// Re-register core widgets.
|
||||
$wp_widget_factory->_register_widgets();
|
||||
wp_widgets_init();
|
||||
|
||||
// Register a non-multi widget for testing.
|
||||
wp_register_widget_control(
|
||||
@ -149,6 +143,27 @@ class WP_Test_REST_Widgets_Controller extends WP_Test_REST_Controller_Testcase {
|
||||
);
|
||||
}
|
||||
|
||||
public function clean_up_global_scope() {
|
||||
global
|
||||
$wp_widget_factory,
|
||||
$wp_registered_sidebars,
|
||||
$wp_registered_widgets,
|
||||
$wp_registered_widget_controls,
|
||||
$wp_registered_widget_updates,
|
||||
$_wp_sidebars_widgets;
|
||||
|
||||
$wp_registered_sidebars = array();
|
||||
$wp_registered_widgets = array();
|
||||
$wp_registered_widget_controls = array();
|
||||
$wp_registered_widget_updates = array();
|
||||
$wp_widget_factory->widgets = array();
|
||||
$_wp_sidebars_widgets = array();
|
||||
|
||||
update_option( 'sidebars_widgets', array() );
|
||||
|
||||
parent::clean_up_global_scope();
|
||||
}
|
||||
|
||||
private function setup_widget( $id_base, $number, $settings ) {
|
||||
global $wp_widget_factory;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user