Make WordPress Core

Ticket #35475: 35475.patch

File 35475.patch, 3.9 KB (added by sebastian.pisula, 8 years ago)
  • wp-includes/widgets.php

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    2323//
    2424
    2525/** @ignore */
    26 global $wp_registered_sidebars, $wp_registered_widgets, $wp_registered_widget_controls, $wp_registered_widget_updates;
     26global $wp_registered_sidebars, $wp_registered_widgets, $wp_registered_widget_controls, $wp_registered_widget_updates, $wp_current_widget;
    2727
    2828/**
    2929 * Stores the sidebars, since many themes can have more than one.
     
    5454$wp_registered_widget_updates = array();
    5555
    5656/**
     57 * @since 4.5.0
     58 *
     59 * @global array $wp_current_widget
     60 */
     61$wp_current_widget = array();
     62
     63/**
    5764 * Private
    5865 *
    5966 * @global array $_wp_sidebars_widgets
     
    95102//
    96103
    97104/**
     105 * Get option from current widget array
     106 *
     107 * @since 4.5.0
     108 *
     109 * @param string $option Option to get from current widget
     110 *
     111 * @return bool|string
     112 */
     113function _get_current_widget_option( $option ) {
     114        global $wp_current_widget;
     115
     116        if ( isset( $wp_current_widget[ $option ] ) ) {
     117                return $wp_current_widget[ $option ];
     118        }
     119
     120        return false;
     121}
     122
     123/**
     124 * Get current widget id
     125 *
     126 * @since 4.5.0
     127 *
     128 * @return bool|string
     129 */
     130function current_widget_id() {
     131        return _get_current_widget_option( 'widget_id' );
     132}
     133
     134/**
     135 * Get current widget id base
     136 *
     137 * @since 4.5.0
     138 *
     139 * @return bool|string
     140 */
     141function current_widget() {
     142        return _get_current_widget_option( 'id_base' );
     143}
     144
     145/**
    98146 * Register a widget
    99147 *
    100148 * Registers a WP_Widget widget
     
    10171065 * @since 2.8.0
    10181066 *
    10191067 * @global WP_Widget_Factory $wp_widget_factory
     1068 * @global array $wp_current_widget
    10201069 *
    10211070 * @param string $widget   The widget's PHP class name (see class-wp-widget.php).
    10221071 * @param array  $instance Optional. The widget's instance settings. Default empty array.
     
    10341083 * }
    10351084 */
    10361085function the_widget( $widget, $instance = array(), $args = array() ) {
    1037         global $wp_widget_factory;
     1086        global $wp_widget_factory, $wp_current_widget;
    10381087
    10391088        $widget_obj = $wp_widget_factory->widgets[$widget];
    10401089        if ( ! ( $widget_obj instanceof WP_Widget ) ) {
     
    10641113        do_action( 'the_widget', $widget, $instance, $args );
    10651114
    10661115        $widget_obj->_set(-1);
     1116
     1117        $wp_current_widget = array( 'id_base' => $this->id_base, 'widget_id' => $args['widget_id'] );
     1118
    10671119        $widget_obj->widget($args, $instance);
     1120
     1121        $wp_current_widget = array();
    10681122}
    10691123
    10701124/**
  • wp-includes/class-wp-widget.php

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    315315         * @since 2.8.0
    316316         * @access public
    317317         *
     318         * @global array $wp_current_widget
     319         *
    318320         * @param array     $args        Display arguments. See {@see WP_Widget::widget()} for information
    319321         *                               on accepted arguments.
    320322         * @param int|array $widget_args {
     
    325327         * }
    326328         */
    327329        public function display_callback( $args, $widget_args = 1 ) {
     330                global $wp_current_widget;
     331
    328332                if ( is_numeric( $widget_args ) ) {
    329333                        $widget_args = array( 'number' => $widget_args );
    330334                }
     
    358362                                wp_suspend_cache_addition( true );
    359363                        }
    360364
     365                        $wp_current_widget = array( 'id_base' => $this->id_base, 'widget_id' => $args['widget_id'] );
     366
    361367                        $this->widget( $args, $instance );
     368
     369                        $wp_current_widget = array();
    362370
    363371                        if ( $this->is_preview() ) {
    364372                                wp_suspend_cache_addition( $was_cache_addition_suspended );