WP_Customize_Media_Control::to_json()publicWP 3.4.0

Refresh the parameters passed to the JavaScript via JSON.

Method of the class: WP_Customize_Media_Control{}

No Hooks.

Return

null. Nothing (null).

Usage

$WP_Customize_Media_Control = new WP_Customize_Media_Control();
$WP_Customize_Media_Control->to_json();

Notes

Changelog

Since 3.4.0 Introduced.
Since 4.2.0 Moved from WP_Customize_Upload_Control.

WP_Customize_Media_Control::to_json() code WP 6.6.2

public function to_json() {
	parent::to_json();
	$this->json['label']         = html_entity_decode( $this->label, ENT_QUOTES, get_bloginfo( 'charset' ) );
	$this->json['mime_type']     = $this->mime_type;
	$this->json['button_labels'] = $this->button_labels;
	$this->json['canUpload']     = current_user_can( 'upload_files' );

	$value = $this->value();

	if ( is_object( $this->setting ) ) {
		if ( $this->setting->default ) {
			/*
			 * Fake an attachment model - needs all fields used by template.
			 * Note that the default value must be a URL, NOT an attachment ID.
			 */
			$ext  = substr( $this->setting->default, -3 );
			$type = in_array( $ext, array( 'jpg', 'png', 'gif', 'bmp', 'webp', 'avif' ), true ) ? 'image' : 'document';

			$default_attachment = array(
				'id'    => 1,
				'url'   => $this->setting->default,
				'type'  => $type,
				'icon'  => wp_mime_type_icon( $type, '.svg' ),
				'title' => wp_basename( $this->setting->default ),
			);

			if ( 'image' === $type ) {
				$default_attachment['sizes'] = array(
					'full' => array( 'url' => $this->setting->default ),
				);
			}

			$this->json['defaultAttachment'] = $default_attachment;
		}

		if ( $value && $this->setting->default && $value === $this->setting->default ) {
			// Set the default as the attachment.
			$this->json['attachment'] = $this->json['defaultAttachment'];
		} elseif ( $value ) {
			$this->json['attachment'] = wp_prepare_attachment_for_js( $value );
		}
	}
}