diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 07:56:49 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 07:56:49 +0000 |
commit | a415c29efee45520ae252d2aa28f1083a521cd7b (patch) | |
tree | f4ade4b6668ecc0765de7e1424f7c1427ad433ff /wp-includes/customize/class-wp-widget-form-customize-control.php | |
parent | Initial commit. (diff) | |
download | wordpress-a415c29efee45520ae252d2aa28f1083a521cd7b.tar.xz wordpress-a415c29efee45520ae252d2aa28f1083a521cd7b.zip |
Adding upstream version 6.4.3+dfsg1.upstream/6.4.3+dfsg1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'wp-includes/customize/class-wp-widget-form-customize-control.php')
-rw-r--r-- | wp-includes/customize/class-wp-widget-form-customize-control.php | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/wp-includes/customize/class-wp-widget-form-customize-control.php b/wp-includes/customize/class-wp-widget-form-customize-control.php new file mode 100644 index 0000000..cfab188 --- /dev/null +++ b/wp-includes/customize/class-wp-widget-form-customize-control.php @@ -0,0 +1,140 @@ +<?php +/** + * Customize API: WP_Widget_Form_Customize_Control class + * + * @package WordPress + * @subpackage Customize + * @since 4.4.0 + */ + +/** + * Widget Form Customize Control class. + * + * @since 3.9.0 + * + * @see WP_Customize_Control + */ +class WP_Widget_Form_Customize_Control extends WP_Customize_Control { + /** + * Customize control type. + * + * @since 3.9.0 + * @var string + */ + public $type = 'widget_form'; + + /** + * Widget ID. + * + * @since 3.9.0 + * @var string + */ + public $widget_id; + + /** + * Widget ID base. + * + * @since 3.9.0 + * @var string + */ + public $widget_id_base; + + /** + * Sidebar ID. + * + * @since 3.9.0 + * @var string + */ + public $sidebar_id; + + /** + * Widget status. + * + * @since 3.9.0 + * @var bool True if new, false otherwise. Default false. + */ + public $is_new = false; + + /** + * Widget width. + * + * @since 3.9.0 + * @var int + */ + public $width; + + /** + * Widget height. + * + * @since 3.9.0 + * @var int + */ + public $height; + + /** + * Widget mode. + * + * @since 3.9.0 + * @var bool True if wide, false otherwise. Default false. + */ + public $is_wide = false; + + /** + * Gather control params for exporting to JavaScript. + * + * @since 3.9.0 + * + * @global array $wp_registered_widgets + */ + public function to_json() { + global $wp_registered_widgets; + + parent::to_json(); + $exported_properties = array( 'widget_id', 'widget_id_base', 'sidebar_id', 'width', 'height', 'is_wide' ); + foreach ( $exported_properties as $key ) { + $this->json[ $key ] = $this->$key; + } + + // Get the widget_control and widget_content. + require_once ABSPATH . 'wp-admin/includes/widgets.php'; + + $widget = $wp_registered_widgets[ $this->widget_id ]; + if ( ! isset( $widget['params'][0] ) ) { + $widget['params'][0] = array(); + } + + $args = array( + 'widget_id' => $widget['id'], + 'widget_name' => $widget['name'], + ); + + $args = wp_list_widget_controls_dynamic_sidebar( + array( + 0 => $args, + 1 => $widget['params'][0], + ) + ); + $widget_control_parts = $this->manager->widgets->get_widget_control_parts( $args ); + + $this->json['widget_control'] = $widget_control_parts['control']; + $this->json['widget_content'] = $widget_control_parts['content']; + } + + /** + * Override render_content to be no-op since content is exported via to_json for deferred embedding. + * + * @since 3.9.0 + */ + public function render_content() {} + + /** + * Whether the current widget is rendered on the page. + * + * @since 4.0.0 + * + * @return bool Whether the widget is rendered. + */ + public function active_callback() { + return $this->manager->widgets->is_widget_rendered( $this->widget_id ); + } +} |