Make WordPress Core


Ignore:
Timestamp:
10/19/2020 03:38:11 PM (4 years ago)
Author:
SergeyBiryukov
Message:

Widgets: Introduce before_sidebar and after_sidebar arguments for register_sidebar().

Props deepaklalwani, flixos90, christophherr, dgwyer, markoheijnen, morganestes, audrasjb.
Fixes #19709.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/widgets.php

    r48839 r49203  
    220220 *
    221221 * @since 2.2.0
     222 * @since 5.6.0 Added the `before_sidebar` and `after_sidebar` arguments.
    222223 *
    223224 * @global array $wp_registered_sidebars Registered sidebars.
     
    226227 *     Optional. Array or string of arguments for the sidebar being registered.
    227228 *
    228  *     @type string $name          The name or title of the sidebar displayed in the Widgets
    229  *                                 interface. Default 'Sidebar $instance'.
    230  *     @type string $id            The unique identifier by which the sidebar will be called.
    231  *                                 Default 'sidebar-$instance'.
    232  *     @type string $description   Description of the sidebar, displayed in the Widgets interface.
    233  *                                 Default empty string.
    234  *     @type string $class         Extra CSS class to assign to the sidebar in the Widgets interface.
    235  *                                 Default empty.
    236  *     @type string $before_widget HTML content to prepend to each widget's HTML output when
    237  *                                 assigned to this sidebar. Default is an opening list item element.
    238  *     @type string $after_widget  HTML content to append to each widget's HTML output when
    239  *                                 assigned to this sidebar. Default is a closing list item element.
    240  *     @type string $before_title  HTML content to prepend to the sidebar title when displayed.
    241  *                                 Default is an opening h2 element.
    242  *     @type string $after_title   HTML content to append to the sidebar title when displayed.
    243  *                                 Default is a closing h2 element.
     229 *     @type string $name           The name or title of the sidebar displayed in the Widgets
     230 *                                  interface. Default 'Sidebar $instance'.
     231 *     @type string $id             The unique identifier by which the sidebar will be called.
     232 *                                  Default 'sidebar-$instance'.
     233 *     @type string $description    Description of the sidebar, displayed in the Widgets interface.
     234 *                                  Default empty string.
     235 *     @type string $class          Extra CSS class to assign to the sidebar in the Widgets interface.
     236 *                                  Default empty.
     237 *     @type string $before_widget  HTML content to prepend to each widget's HTML output when
     238 *                                  assigned to this sidebar. Default is an opening list item element.
     239 *     @type string $after_widget   HTML content to append to each widget's HTML output when
     240 *                                  assigned to this sidebar. Default is a closing list item element.
     241 *     @type string $before_title   HTML content to prepend to the sidebar title when displayed.
     242 *                                  Default is an opening h2 element.
     243 *     @type string $after_title    HTML content to append to the sidebar title when displayed.
     244 *                                  Default is a closing h2 element.
     245 *     @type string $before_sidebar HTML content to prepend to the sidebar when displayed.
     246 *                                  Outputs after the {@see 'dynamic_sidebar_before'} action.
     247 *                                  Default empty string.
     248 *     @type string $after_sidebar  HTML content to append to the sidebar when displayed.
     249 *                                  Outputs before the {@see 'dynamic_sidebar_after'} action.
     250 *                                  Default empty string.
    244251 * }
    245252 * @return string Sidebar ID added to $wp_registered_sidebars global.
     
    254261    $defaults = array(
    255262        /* translators: %d: Sidebar number. */
    256         'name'          => sprintf( __( 'Sidebar %d' ), $i ),
    257         'id'            => "sidebar-$i",
    258         'description'   => '',
    259         'class'         => '',
    260         'before_widget' => '<li id="%1$s" class="widget %2$s">',
    261         'after_widget'  => "</li>\n",
    262         'before_title'  => '<h2 class="widgettitle">',
    263         'after_title'   => "</h2>\n",
     263        'name'           => sprintf( __( 'Sidebar %d' ), $i ),
     264        'id'             => "sidebar-$i",
     265        'description'    => '',
     266        'class'          => '',
     267        'before_widget'  => '<li id="%1$s" class="widget %2$s">',
     268        'after_widget'   => "</li>\n",
     269        'before_title'   => '<h2 class="widgettitle">',
     270        'after_title'    => "</h2>\n",
     271        'before_sidebar' => '',
     272        'after_sidebar'  => '',
    264273    );
    265274
     
    692701    }
    693702
     703    $sidebar = $wp_registered_sidebars[ $index ];
     704
     705    $sidebar['before_sidebar'] = sprintf( $sidebar['before_sidebar'], $sidebar['id'], $sidebar['class'] );
     706
    694707    /**
    695708     * Fires before widgets are rendered in a dynamic sidebar.
     
    705718     */
    706719    do_action( 'dynamic_sidebar_before', $index, true );
    707     $sidebar = $wp_registered_sidebars[ $index ];
     720
     721    if ( ! empty( $sidebar['before_sidebar'] ) ) {
     722        echo $sidebar['before_sidebar'];
     723    }
    708724
    709725    $did_one = false;
     
    808824    }
    809825
     826    if ( ! empty( $sidebar['after_sidebar'] ) ) {
     827        echo $sidebar['after_sidebar'];
     828    }
     829
    810830    /**
    811831     * Fires after widgets are rendered in a dynamic sidebar.
Note: See TracChangeset for help on using the changeset viewer.