dynamic_sidebar_paramsхук-фильтрWP 2.5.0

Позволяет изменить параметры, переданные в callback функцию отображения виджета.

Примечание: фильтр срабатывает как на лицевой части, так и в административной части сайта в том числе для неактивных виджетов боковой панели на экране виджетов.

Использование

add_filter( 'dynamic_sidebar_params', 'wp_kama_dynamic_sidebar_params_filter' );

/**
 * Function for `dynamic_sidebar_params` filter-hook.
 * 
 * @param array $params 
 *
 * @return array
 */
function wp_kama_dynamic_sidebar_params_filter( $params ){

	// filter...
	return $params;
}
$params(массив)
  • args(массив)
    Массив аргументов отображения виджета.

    • name(строка)
      Имя боковой панели, которой назначен виджет.

    • id(строка)
      ID боковой панели, которой назначен виджет.

    • description(строка)
      Описание боковой панели.

    • class(строка)
      Значение атрибута class для контейнера боковой панели.

    • before_widget(строка)
      Текст перед каждым виджетом на боковой панели.

    • after_widget(строка)
      Текст после каждого виджета на боковой панели.

    • before_title(строка)
      Текст перед отображением заголовка виджета.

    • after_title(строка)
      Текст после отображения заголовка виджета.

    • widget_id(строка)
      ID виджета.

    • widget_name(строка)
      Название виджета.
  • widget_args(массив)
    Массив аргументов нескольких виджетов.

    • number(число)
      Номер использования множественного подключения одного и того же виджета.

Примеры

0

#1 Заменим класс контейнера названием виджета

add_filter( 'dynamic_sidebar_params', 'my_edit_widget_func' );

function my_edit_widget_func( $params ) {
	$class = str_replace( ' ', '-', $params[0]['widget_name'] ); 
	$params[0]['before_title'] = '<h3 class="' . $class . '">' ;

	return $params;
}
0

#2 Добавим картинку перед названием определенного виджета

add_filter( 'dynamic_sidebar_params', 'my_edit_widget_func' );

function my_edit_widget_func( $params ) {
	if ( $params[0]['widget_id'] == 'example-1' ) {
		$params[0]['before_title'] .= '<img src="' . get_stylesheet_directory_uri() . '/example-icon.png">';
	}

	return $params;
}
0

#3 Изменим класс контейнеров для четных виджетов

add_filter( 'dynamic_sidebar_params', 'change_class_for_even' );

function change_class_for_even( $params ) {
	global $widget_counter;

	if ( $params[0]['id'] == 'sidebar-1' ) {
		$widget_counter++;
		if ( $widget_counter % 2 == 0 ) {
			$params[0]['before_widget'] = '<section id="' . $params[0]['widget_id'] . '" class="widget-even">';
		}
	}
	return $params;
}

Список изменений

С версии 2.5.0 Введена.

Где вызывается хук

dynamic_sidebar()
dynamic_sidebar_params
wp_render_widget()
dynamic_sidebar_params
wp-includes/widgets.php 803
$params = apply_filters( 'dynamic_sidebar_params', $params );
wp-includes/widgets.php 2012
$params = apply_filters( 'dynamic_sidebar_params', $params );

Где используется хук в WordPress

wp-admin/includes/widgets.php 86
add_filter( 'dynamic_sidebar_params', 'wp_list_widget_controls_dynamic_sidebar' );
wp-includes/class-wp-customize-widgets.php 1759
add_filter( 'dynamic_sidebar_params', array( $this, 'filter_dynamic_sidebar_params' ) );