$key = $args[ $key ];
}
$this->manager = $manager;
$this->id = $id;
// Process settings.
if ( empty( $this->settings ) )
$this->settings = $id;
$settings = array();
if ( is_array( $this->settings ) ) {
foreach ( $this->settings as $key => $setting ) {
$settings[ $key ] = $this->manager->get_setting( $setting );
}
} else {
$this->setting = $this->manager->get_setting( $this->settings );
$settings['default'] = $this->setting;
}
$this->settings = $settings;
}
/**
* Enqueue control related scripts/styles.
*
* @since 3.4.0
*/
public function enqueue() {}
/**
* Fetch a setting's value.
* Grabs the main setting by default.
*
* @since 3.4.0
*/
public final function value( $setting_key = 'default' ) {
if ( isset( $this->settings[ $setting_key ] ) )
return $this->settings[ $setting_key ]->value();
}
/**
* Refresh the parameters passed to the JavaScript via JSON.
*
* @since 3.4.0
*/
public function to_json() {
$this->json['settings'] = array();
foreach ( $this->settings as $key => $setting ) {
$this->json['settings'][ $key ] = $setting->id;
}
$this->json['type'] = $this->type;
}
/**
* Check if the theme supports the control and check user capabilities.
*
* @since 3.4.0
*
* @return bool False if theme doesn't support the control or user doesn't have the required permissions, otherwise true.
*/
public final function check_capabilities() {
foreach ( $this->settings as $setting ) {
if ( ! $setting->check_capabilities() )
return false;
}
$section = $this->manager->get_section( $this->section );
if ( isset( $section ) && ! $section->check_capabilities() )
return false;
return true;
}
/**
* Check capabilities and render the control.
*
* @since 3.4.0
*/
public final function maybe_render() {
if ( ! $this->check_capabilities() )
return;
do_action( 'customize_render_control', $this );
do_action( 'customize_render_control_' . $this->id, $this );
$this->render();
}
/**
* Render the control. Renders the control wrapper, then calls $this->render_content().
*
* @since 3.4.0
*/
protected function render() {
$id = 'customize-control-' . str_replace( '[', '-', str_replace( ']', '', $this->id ) );
$class = 'customize-control customize-control-' . $this->type;
?>
render_content(); ?>
settings[ $setting_key ] ) )
return '';
return 'data-customize-setting-link="' . esc_attr( $this->settings[ $setting_key ]->id ) . '"';
}
public function link( $setting_key = 'default' ) {
echo $this->get_link( $setting_key );
}
/**
* Render the control's content.
*
* Allows the content to be overriden without having to rewrite the wrapper.
*
* @since 3.4.0
*/
protected function render_content() {
switch( $this->type ) {
case 'text':
?>
choices ) )
return;
$name = '_customize-radio-' . $this->id;
?>
label ); ?>
choices as $value => $label ) :
?>
choices ) )
return;
?>
'_customize-dropdown-pages-' . $this->id,
'echo' => 0,
'show_option_none' => __( '— Select —' ),
'option_none_value' => '0',
'selected' => $this->value(),
)
);
// Hackily add in the data link parameter.
$dropdown = str_replace( '