dynamic_sidebar() – Display dynamic sidebar.

You appear to be a bot. Output may be restricted

Description

Display dynamic sidebar.

By default this displays the default sidebar or 'sidebar-1'. If your theme specifies the 'id' or 'name' parameter for its registered sidebars you can pass an ID or name as the $index parameter. Otherwise, you can pass in a numerical index to display the sidebar at that index.

Usage

$bool = dynamic_sidebar( $index );

Parameters

$index
( int|string ) optional default: 1 – Optional. Index, name or ID of dynamic sidebar. Default 1.

Returns

bool True, if widget sidebar was found and called. False if not found or not called.

Source

File name: wordpress/wp-includes/widgets.php
Lines:

1 to 100 of 185
function dynamic_sidebar( $index = 1 ) {
  global $wp_registered_sidebars, $wp_registered_widgets;

  if ( is_int( $index ) ) {
    $index = "sidebar-$index";
  } else {
    $index = sanitize_title( $index );
    foreach ( (array) $wp_registered_sidebars as $key => $value ) {
      if ( sanitize_title( $value['name'] ) === $index ) {
        $index = $key;
        break;
      }
    }
  }

  $sidebars_widgets = wp_get_sidebars_widgets();
  if ( empty( $wp_registered_sidebars[ $index ] ) || empty( $sidebars_widgets[ $index ] ) || ! is_array( $sidebars_widgets[ $index ] ) ) {
    
/** This action is documented in wp-includes/widget.php */
    do_action( 'dynamic_sidebar_before', $index, false );
    
/** This action is documented in wp-includes/widget.php */
    do_action( 'dynamic_sidebar_after', $index, false );
    
/** This filter is documented in wp-includes/widget.php */
    return apply_filters( 'dynamic_sidebar_has_widgets', false, $index );
  }

  $sidebar = $wp_registered_sidebars[ $index ];

  $sidebar['before_sidebar'] = sprintf( $sidebar['before_sidebar'], $sidebar['id'], $sidebar['class'] );

  
/**
 * Fires before widgets are rendered in a dynamic sidebar.
 *
 * Note: The action also fires for empty sidebars, and on both the front end
 * and back end, including the Inactive Widgets sidebar on the Widgets screen.
 *
 * @since 3.9.0
 *
 * @param int|string $index       Index, name, or ID of the dynamic sidebar.
 * @param bool       $has_widgets Whether the sidebar is populated with widgets.
 *                                Default true.
 */
  do_action( 'dynamic_sidebar_before', $index, true );

  if ( ! is_admin() && ! empty( $sidebar['before_sidebar'] ) ) {
    echo $sidebar['before_sidebar'];
  }

  $did_one = false;
  foreach ( (array) $sidebars_widgets[ $index ] as $id ) {

    if ( ! isset( $wp_registered_widgets[ $id ] ) ) {
      continue;
    }

    $params = array_merge(
      array(
        array_merge(
          $sidebar,
          array(
            'widget_id'   => $id,
            'widget_name' => $wp_registered_widgets[ $id ]['name'],
          )
        ),
      ),
      (array) $wp_registered_widgets[ $id ]['params']
    );

    // Substitute HTML `id` and `class` attributes into `before_widget`.
    $classname_ = '';
    foreach ( (array) $wp_registered_widgets[ $id ]['classname'] as $cn ) {
      if ( is_string( $cn ) ) {
        $classname_ .= '_' . $cn;
      } elseif ( is_object( $cn ) ) {
        $classname_ .= '_' . get_class( $cn );
      }
    }
    $classname_ = ltrim( $classname_, '_' );

    $params[0]['before_widget'] = sprintf(
      $params[0]['before_widget'],
      str_replace( '\\', '_', $id ),
      $classname_
    );

    
/**
 * Filters the parameters passed to a widget's display callback.
 *
 * Note: The filter is evaluated on both the front end and back end,
 * including for the Inactive Widgets sidebar on the Widgets screen.
 *
 * @since 2.5.0
 *
 * @see register_sidebar()
 *
 * @param array $params {
 *     @type array $args  {
 *         An array of widget display arguments.
 *
 *         @type string $name          Name of the sidebar the widget is assigned to.
 *         @type string $id            ID of the sidebar the widget is assigned to.
 

 View on GitHub View on Trac