mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-08-11 20:30:23 +00:00
Add JS templates for Customizer Panels and Sections.
This extends the approach taken for Customizer Controls in #29572. Props celloexpressions, westonruter, ocean90. See #30737. git-svn-id: https://develop.svn.wordpress.org/trunk@32658 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
@@ -60,7 +60,25 @@ final class WP_Customize_Manager {
|
||||
protected $customized;
|
||||
|
||||
/**
|
||||
* Controls that may be rendered from JS templates.
|
||||
* Panel types that may be rendered from JS templates.
|
||||
*
|
||||
* @since 4.3.0
|
||||
* @access protected
|
||||
* @var array
|
||||
*/
|
||||
protected $registered_panel_types = array();
|
||||
|
||||
/**
|
||||
* Section types that may be rendered from JS templates.
|
||||
*
|
||||
* @since 4.3.0
|
||||
* @access protected
|
||||
* @var array
|
||||
*/
|
||||
protected $registered_section_types = array();
|
||||
|
||||
/**
|
||||
* Control types that may be rendered from JS templates.
|
||||
*
|
||||
* @since 4.1.0
|
||||
* @access protected
|
||||
@@ -612,19 +630,29 @@ final class WP_Customize_Manager {
|
||||
}
|
||||
|
||||
foreach ( $this->settings as $id => $setting ) {
|
||||
$settings['values'][ $id ] = $setting->js_value();
|
||||
if ( $setting->check_capabilities() ) {
|
||||
$settings['values'][ $id ] = $setting->js_value();
|
||||
}
|
||||
}
|
||||
foreach ( $this->panels as $id => $panel ) {
|
||||
$settings['activePanels'][ $id ] = $panel->active();
|
||||
foreach ( $panel->sections as $id => $section ) {
|
||||
$settings['activeSections'][ $id ] = $section->active();
|
||||
foreach ( $this->panels as $panel_id => $panel ) {
|
||||
if ( $panel->check_capabilities() ) {
|
||||
$settings['activePanels'][ $panel_id ] = $panel->active();
|
||||
foreach ( $panel->sections as $section_id => $section ) {
|
||||
if ( $section->check_capabilities() ) {
|
||||
$settings['activeSections'][ $section_id ] = $section->active();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
foreach ( $this->sections as $id => $section ) {
|
||||
$settings['activeSections'][ $id ] = $section->active();
|
||||
if ( $section->check_capabilities() ) {
|
||||
$settings['activeSections'][ $id ] = $section->active();
|
||||
}
|
||||
}
|
||||
foreach ( $this->controls as $id => $control ) {
|
||||
$settings['activeControls'][ $id ] = $control->active();
|
||||
if ( $control->check_capabilities() ) {
|
||||
$settings['activeControls'][ $id ] = $control->active();
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -964,6 +992,34 @@ final class WP_Customize_Manager {
|
||||
unset( $this->panels[ $id ] );
|
||||
}
|
||||
|
||||
/**
|
||||
* Register a customize panel type.
|
||||
*
|
||||
* Registered types are eligible to be rendered via JS and created dynamically.
|
||||
*
|
||||
* @since 4.3.0
|
||||
* @access public
|
||||
*
|
||||
* @param string $panel Name of a custom panel which is a subclass of
|
||||
* {@see WP_Customize_Panel}.
|
||||
*/
|
||||
public function register_panel_type( $panel ) {
|
||||
$this->registered_panel_types[] = $panel;
|
||||
}
|
||||
|
||||
/**
|
||||
* Render JS templates for all registered panel types.
|
||||
*
|
||||
* @since 4.3.0
|
||||
* @access public
|
||||
*/
|
||||
public function render_panel_templates() {
|
||||
foreach ( $this->registered_panel_types as $panel_type ) {
|
||||
$panel = new $panel_type( $this, 'temp', array() );
|
||||
$panel->print_template();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a customize section.
|
||||
*
|
||||
@@ -1005,6 +1061,34 @@ final class WP_Customize_Manager {
|
||||
unset( $this->sections[ $id ] );
|
||||
}
|
||||
|
||||
/**
|
||||
* Register a customize section type.
|
||||
*
|
||||
* Registered types are eligible to be rendered via JS and created dynamically.
|
||||
*
|
||||
* @since 4.3.0
|
||||
* @access public
|
||||
*
|
||||
* @param string $section Name of a custom section which is a subclass of
|
||||
* {@see WP_Customize_Section}.
|
||||
*/
|
||||
public function register_section_type( $section ) {
|
||||
$this->registered_section_types[] = $section;
|
||||
}
|
||||
|
||||
/**
|
||||
* Render JS templates for all registered section types.
|
||||
*
|
||||
* @since 4.3.0
|
||||
* @access public
|
||||
*/
|
||||
public function render_section_templates() {
|
||||
foreach ( $this->registered_section_types as $section_type ) {
|
||||
$section = new $section_type( $this, 'temp', array() );
|
||||
$section->print_template();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a customize control.
|
||||
*
|
||||
@@ -1176,7 +1260,10 @@ final class WP_Customize_Manager {
|
||||
*/
|
||||
public function register_controls() {
|
||||
|
||||
/* Control Types (custom control classes) */
|
||||
/* Panel, Section, and Control Types */
|
||||
$this->register_panel_type( 'WP_Customize_Panel' );
|
||||
$this->register_section_type( 'WP_Customize_Section' );
|
||||
$this->register_section_type( 'WP_Customize_Sidebar_Section' );
|
||||
$this->register_control_type( 'WP_Customize_Color_Control' );
|
||||
$this->register_control_type( 'WP_Customize_Media_Control' );
|
||||
$this->register_control_type( 'WP_Customize_Upload_Control' );
|
||||
|
||||
Reference in New Issue
Block a user