WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

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

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

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

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

add_filter( 'dynamic_sidebar_params', 'filter_function_name_7588' );
function filter_function_name_7588( $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(число)
      Номер использования множественного подключения одного и того же виджета.

Примеры

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

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

#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-includes/widgets.php 773
$params = apply_filters( 'dynamic_sidebar_params', $params );

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

wp-admin/includes/widgets.php 86
add_filter( 'dynamic_sidebar_params', 'wp_list_widget_controls_dynamic_sidebar' );
wp-includes/class-wp-customize-widgets.php 1625
add_filter( 'dynamic_sidebar_params', array( $this, 'filter_dynamic_sidebar_params' ) );
Glum 697
Редакторы: Kama 7774
2 коммента
  • @ Евгений

    Думаю, аргументы должны быть без знака $, потому что это же не переменные smile drinks

    Ответитьмесяц назад #
    • Kama7774

      Да, надо бы заменить везде, чет так пошло и идет, в этом описании поменял, а вообще это все не просто ...

      1
      Ответитьмесяц назад #