json['widgets'] = $this->widgets; $this->json['locations'] = $this->locations; $this->json['visibility'] = $this->visibility; // Add widget templates to be used when generating new widgets. if ( is_array( $this->widgets ) && ! empty( $this->widgets ) ) { // Get all widgets. $widgets = bloghash_get_customizer_widgets(); foreach ( $this->widgets as $widget_id => $args ) { // If this widget is not defined, skip. if ( ! isset( $widgets[ $widget_id ] ) ) { continue; } // Widget locations. $args['locations'] = $this->locations; $args['visibility'] = $this->visibility; $args['id'] = $this->id; // Create a widget instance. $classname = $widgets[ $widget_id ]; $instance = new $classname( $args ); // Add info about max uses for the widget. $max_uses = isset( $args['max_uses'] ) ? intval( $args['max_uses'] ) : -1; ob_start(); ?>
> template(); ?>
json['widget_tpl'][ $widget_id ] = ob_get_clean(); } } $value = $this->value(); $this->json['value'] = array(); // Added widgets. if ( is_array( $value ) && ! empty( $value ) ) { foreach ( $value as $i => $widget ) { // Widget type is required. if ( ! isset( $widget['type'], $widget['values'] ) ) { continue; } // This widget type is not allowed. if ( ! isset( $this->widgets[ $widget['type'] ] ) ) { continue; } // Create widget instance. $classname = $widget['classname']; $args = $this->widgets[ $widget['type'] ]; $args['id'] = $this->id . '_' . $i; $args['number'] = $i; $args['values'] = $widget['values']; $args['locations'] = $this->locations; $args['visibility'] = $this->visibility; if ( class_exists( $classname ) ) { $instance = new $classname( $args ); // Print widget template. ob_start(); $instance->template(); $this->json['value'][] = ob_get_clean(); } } } } /** * An Underscore (JS) template for this control's content (but not its container). * * Class variables for this control class are available in the `data` JS object; * export custom variables by overriding {@see WP_Customize_Control::to_json()}. * * @see WP_Customize_Control::print_template() */ protected function content_template() { ?>
<# _.each( data.value, function( template, i ) { #> {{{ template }}} <# }); #>
<# _.each( data.widget_tpl, function( template, i ) { #> {{{ template }}} <# }); #>