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 | } |