Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,8 @@ public function get_items_permissions_check( $request ) {
* @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 ) {
Expand Down Expand Up @@ -149,6 +151,8 @@ public function get_item_permissions_check( $request ) {
* @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 );

Expand Down Expand Up @@ -230,6 +234,8 @@ public function update_item_permissions_check( $request ) {
public function update_item( $request ) {
global $wp_widget_factory;

retrieve_widgets();

$widget_id = $request['id'];
$sidebar_id = wp_find_widgets_sidebar( $widget_id );

Expand Down Expand Up @@ -291,6 +297,8 @@ public function delete_item_permissions_check( $request ) {
public function delete_item( $request ) {
global $wp_registered_widget_updates;

retrieve_widgets();

$widget_id = $request['id'];
$sidebar_id = wp_find_widgets_sidebar( $widget_id );

Expand Down
31 changes: 23 additions & 8 deletions tests/phpunit/tests/rest-api/rest-widgets-controller.php
Original file line number Diff line number Diff line change
Expand Up @@ -95,20 +95,14 @@ public static function wpSetUpBeforeClass( $factory ) {
}

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(
Expand Down Expand Up @@ -149,6 +143,27 @@ function () {
);
}

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;

Expand Down