WP_Customize_Manager::prepare_controls PHP Method

prepare_controls() public method

For each, check if required related components exist, whether the user has the necessary capabilities, and sort by priority.
Since: 3.4.0
public prepare_controls ( )
    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);
    }

Usage Example

 /**
  * @ticket 37128
  */
 function test_prepare_controls_wp_list_sort_panels()
 {
     wp_set_current_user(self::$admin_user_id);
     $panels = array('foo' => 2, 'bar' => 4, 'foobar' => 3, 'key' => 1);
     $panels_sorted = array('key', 'foo', 'foobar', 'bar');
     foreach ($panels as $panel_id => $priority) {
         $this->manager->add_panel($panel_id, array('priority' => $priority));
     }
     $this->manager->prepare_controls();
     $result = $this->manager->panels();
     $this->assertEquals($panels_sorted, array_keys($result));
 }
All Usage Examples Of WP_Customize_Manager::prepare_controls
WP_Customize_Manager