WP_Customize_Manager::prepare_controls()publicWP 3.4.0

Prepares panels, sections, and controls.

For each, check if required related components exist, whether the user has the necessary capabilities, and sort by priority.

Method of the class: WP_Customize_Manager{}

No Hooks.

Return

null. Nothing (null).

Usage

$WP_Customize_Manager = new WP_Customize_Manager();
$WP_Customize_Manager->prepare_controls();

Changelog

Since 3.4.0 Introduced.

WP_Customize_Manager::prepare_controls() code WP 6.5.2

public function prepare_controls() {

	$controls       = array();
	$this->controls = wp_list_sort(
		$this->controls,
		array(
			'priority'        => 'ASC',
			'instance_number' => 'ASC',
		),
		'ASC',
		true
	);

	foreach ( $this->controls as $id => $control ) {
		if ( ! isset( $this->sections[ $control->section ] ) || ! $control->check_capabilities() ) {
			continue;
		}

		$this->sections[ $control->section ]->controls[] = $control;
		$controls[ $id ]                                 = $control;
	}
	$this->controls = $controls;

	// Prepare sections.
	$this->sections = wp_list_sort(
		$this->sections,
		array(
			'priority'        => 'ASC',
			'instance_number' => 'ASC',
		),
		'ASC',
		true
	);
	$sections       = array();

	foreach ( $this->sections as $section ) {
		if ( ! $section->check_capabilities() ) {
			continue;
		}

		$section->controls = wp_list_sort(
			$section->controls,
			array(
				'priority'        => 'ASC',
				'instance_number' => 'ASC',
			)
		);

		if ( ! $section->panel ) {
			// Top-level section.
			$sections[ $section->id ] = $section;
		} else {
			// This section belongs to a panel.
			if ( isset( $this->panels [ $section->panel ] ) ) {
				$this->panels[ $section->panel ]->sections[ $section->id ] = $section;
			}
		}
	}
	$this->sections = $sections;

	// Prepare panels.
	$this->panels = wp_list_sort(
		$this->panels,
		array(
			'priority'        => 'ASC',
			'instance_number' => 'ASC',
		),
		'ASC',
		true
	);
	$panels       = array();

	foreach ( $this->panels as $panel ) {
		if ( ! $panel->check_capabilities() ) {
			continue;
		}

		$panel->sections      = wp_list_sort(
			$panel->sections,
			array(
				'priority'        => 'ASC',
				'instance_number' => 'ASC',
			),
			'ASC',
			true
		);
		$panels[ $panel->id ] = $panel;
	}
	$this->panels = $panels;

	// Sort panels and top-level sections together.
	$this->containers = array_merge( $this->panels, $this->sections );
	$this->containers = wp_list_sort(
		$this->containers,
		array(
			'priority'        => 'ASC',
			'instance_number' => 'ASC',
		),
		'ASC',
		true
	);
}