WP_Customize_Widgets::render_widget_partial()publicWP 4.5.0

Renders a specific widget using the supplied sidebar arguments.

Метод класса: WP_Customize_Widgets{}

Хуков нет.

Возвращает

Строку|false.

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

$WP_Customize_Widgets = new WP_Customize_Widgets();
$WP_Customize_Widgets->render_widget_partial( $partial, $context );
$partial(WP_Customize_Partial) (обязательный)
Partial.
$context(массив) (обязательный)

Sidebar args supplied as container context.

  • sidebar_id(строка)
    ID for sidebar for widget to render into.

  • sidebar_instance_number(int)
    Disambiguating instance number.

Заметки

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

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

Код WP_Customize_Widgets::render_widget_partial() WP 6.4.3

public function render_widget_partial( $partial, $context ) {
	$id_data   = $partial->id_data();
	$widget_id = array_shift( $id_data['keys'] );

	if ( ! is_array( $context )
		|| empty( $context['sidebar_id'] )
		|| ! is_registered_sidebar( $context['sidebar_id'] )
	) {
		return false;
	}

	$this->rendering_sidebar_id = $context['sidebar_id'];

	if ( isset( $context['sidebar_instance_number'] ) ) {
		$this->context_sidebar_instance_number = (int) $context['sidebar_instance_number'];
	}

	// Filter sidebars_widgets so that only the queried widget is in the sidebar.
	$this->rendering_widget_id = $widget_id;

	$filter_callback = array( $this, 'filter_sidebars_widgets_for_rendering_widget' );
	add_filter( 'sidebars_widgets', $filter_callback, 1000 );

	// Render the widget.
	ob_start();
	$this->rendering_sidebar_id = $context['sidebar_id'];
	dynamic_sidebar( $this->rendering_sidebar_id );
	$container = ob_get_clean();

	// Reset variables for next partial render.
	remove_filter( 'sidebars_widgets', $filter_callback, 1000 );

	$this->context_sidebar_instance_number = null;
	$this->rendering_sidebar_id            = null;
	$this->rendering_widget_id             = null;

	return $container;
}