WordPress 4.7
[autoinstalls/wordpress.git] / wp-includes / customize / class-wp-customize-header-image-setting.php
1 <?php
2 /**
3  * Customize API: WP_Customize_Header_Image_Setting class
4  *
5  * @package WordPress
6  * @subpackage Customize
7  * @since 4.4.0
8  */
9
10 /**
11  * A setting that is used to filter a value, but will not save the results.
12  *
13  * Results should be properly handled using another setting or callback.
14  *
15  * @since 3.4.0
16  *
17  * @see WP_Customize_Setting
18  */
19 final class WP_Customize_Header_Image_Setting extends WP_Customize_Setting {
20         public $id = 'header_image_data';
21
22         /**
23          * @since 3.4.0
24          *
25          * @global Custom_Image_Header $custom_image_header
26          *
27          * @param $value
28          */
29         public function update( $value ) {
30                 global $custom_image_header;
31
32                 // If _custom_header_background_just_in_time() fails to initialize $custom_image_header when not is_admin().
33                 if ( empty( $custom_image_header ) ) {
34                         require_once( ABSPATH . 'wp-admin/custom-header.php' );
35                         $args = get_theme_support( 'custom-header' );
36                         $admin_head_callback = isset( $args[0]['admin-head-callback'] ) ? $args[0]['admin-head-callback'] : null;
37                         $admin_preview_callback = isset( $args[0]['admin-preview-callback'] ) ? $args[0]['admin-preview-callback'] : null;
38                         $custom_image_header = new Custom_Image_Header( $admin_head_callback, $admin_preview_callback );
39                 }
40
41                 // If the value doesn't exist (removed or random),
42                 // use the header_image value.
43                 if ( ! $value )
44                         $value = $this->manager->get_setting('header_image')->post_value();
45
46                 if ( is_array( $value ) && isset( $value['choice'] ) )
47                         $custom_image_header->set_header_image( $value['choice'] );
48                 else
49                         $custom_image_header->set_header_image( $value );
50         }
51 }