diff --git src/wp-includes/class-wp-widget.php src/wp-includes/class-wp-widget.php
index 8d1de7c375..2a7320104c 100644
|
|
class WP_Widget { |
237 | 237 | * @since 2.8.0 |
238 | 238 | */ |
239 | 239 | public function _register() { |
240 | | $settings = $this->get_settings(); |
| 240 | $settings = $this->get_settings_array(); |
241 | 241 | $empty = true; |
242 | 242 | |
243 | | // When $settings is an array-like object, get an intrinsic array for use with array_keys(). |
244 | | if ( $settings instanceof ArrayObject || $settings instanceof ArrayIterator ) { |
245 | | $settings = $settings->getArrayCopy(); |
246 | | } |
247 | | |
248 | 243 | if ( is_array( $settings ) ) { |
249 | 244 | foreach ( array_keys( $settings ) as $number ) { |
250 | 245 | if ( is_numeric( $number ) ) { |
… |
… |
class WP_Widget { |
350 | 345 | |
351 | 346 | $widget_args = wp_parse_args( $widget_args, array( 'number' => -1 ) ); |
352 | 347 | $this->_set( $widget_args['number'] ); |
353 | | $instances = $this->get_settings(); |
| 348 | $instances = $this->get_settings_array(); |
354 | 349 | |
355 | 350 | if ( array_key_exists( $this->number, $instances ) ) { |
356 | 351 | $instance = $instances[ $this->number ]; |
… |
… |
class WP_Widget { |
570 | 565 | * |
571 | 566 | * @since 2.8.0 |
572 | 567 | * |
573 | | * @return array Multi-dimensional array of widget instance settings. |
| 568 | * @return array|ArrayObject|ArrayIterator Multi-dimensional array of widget instance settings. |
| 569 | * Customized widget storage implementations may also |
| 570 | * return ArrayObject or ArrayIterators instances. |
574 | 571 | */ |
575 | 572 | public function get_settings() { |
576 | 573 | |
… |
… |
class WP_Widget { |
597 | 594 | unset( $settings['_multiwidget'], $settings['__i__'] ); |
598 | 595 | return $settings; |
599 | 596 | } |
| 597 | |
| 598 | /** |
| 599 | * Retrieves the settings for all instances as an array. |
| 600 | * |
| 601 | * @since 5.x.y |
| 602 | * |
| 603 | * @return array Array of widget instance settings. |
| 604 | */ |
| 605 | private function get_settings_array() { |
| 606 | $settings = $this->get_settings(); |
| 607 | |
| 608 | if ( $settings instanceof ArrayObject || $settings instanceof ArrayIterator ) { |
| 609 | $settings = $settings->getArrayCopy(); |
| 610 | } |
| 611 | |
| 612 | if ( ! is_array( $settings ) ) { |
| 613 | $settings = array(); |
| 614 | } |
| 615 | |
| 616 | return $settings; |
| 617 | } |
600 | 618 | } |