GC_Customize_Manager::prepare_controls()
最后更新于:2021-11-27 01:09:45
GC_Customize_Manager::prepare_controls()Prepare panels, sections, and controls.
源文件
文件: gc-includes/class-gc-customize-manager.php
public function prepare_controls() {
$controls = array();
$this->controls = gc_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 = gc_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 = gc_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 = gc_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 = gc_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 = gc_list_sort(
$this->containers,
array(
'priority' => 'ASC',
'instance_number' => 'ASC',
),
'ASC',
true
);
}