* @since 2.1.0
* @access private
*/
- var $admin_header_callback;
+ private $admin_header_callback;
/**
* Callback for header div.
* @since 3.0.0
* @access private
*/
- var $admin_image_div_callback;
+ private $admin_image_div_callback;
/**
* Holds default headers.
* @since 3.0.0
* @access private
*/
- var $default_headers = array();
+ private $default_headers = array();
/**
* Holds custom headers uploaded by the user.
* @since 3.2.0
* @access private
*/
- var $uploaded_headers = array();
+ private $uploaded_headers = array();
/**
* Holds the page menu hook.
* @since 3.0.0
* @access private
*/
- var $page = '';
+ private $page = '';
/**
* Constructor - Register administration header callback.
* @param callback $admin_image_div_callback Optional custom image div output callback.
* @return Custom_Image_Header
*/
- function __construct($admin_header_callback, $admin_image_div_callback = '') {
+ public function __construct($admin_header_callback, $admin_image_div_callback = '') {
$this->admin_header_callback = $admin_header_callback;
$this->admin_image_div_callback = $admin_image_div_callback;
add_action( 'wp_ajax_custom-header-remove', array( $this, 'ajax_header_remove' ) );
}
+ /**
+ * Make private properties readable for backwards compatibility.
+ *
+ * @since 4.0.0
+ * @access public
+ *
+ * @param string $name Property to get.
+ * @return mixed Property.
+ */
+ public function __get( $name ) {
+ return $this->$name;
+ }
+
+ /**
+ * Make private properties settable for backwards compatibility.
+ *
+ * @since 4.0.0
+ * @access public
+ *
+ * @param string $name Property to set.
+ * @param mixed $value Property value.
+ * @return mixed Newly-set property.
+ */
+ public function __set( $name, $value ) {
+ return $this->$name = $value;
+ }
+
+ /**
+ * Make private properties checkable for backwards compatibility.
+ *
+ * @since 4.0.0
+ * @access public
+ *
+ * @param string $name Property to check if set.
+ * @return bool Whether the property is set.
+ */
+ public function __isset( $name ) {
+ return isset( $this->$name );
+ }
+
+ /**
+ * Make private properties un-settable for backwards compatibility.
+ *
+ * @since 4.0.0
+ * @access public
+ *
+ * @param string $name Property to unset.
+ */
+ public function __unset( $name ) {
+ unset( $this->$name );
+ }
+
/**
* Set up the hooks for the Custom Header admin page.
*
* @since 2.1.0
*/
- function init() {
+ public function init() {
if ( ! current_user_can('edit_theme_options') )
return;
*
* @since 3.0.0
*/
- function help() {
+ public function help() {
get_current_screen()->add_help_tab( array(
'id' => 'overview',
'title' => __('Overview'),
*
* @return int Current step
*/
- function step() {
+ public function step() {
if ( ! isset( $_GET['step'] ) )
return 1;
*
* @since 2.1.0
*/
- function js_includes() {
+ public function js_includes() {
$step = $this->step();
if ( ( 1 == $step || 3 == $step ) ) {
*
* @since 2.7.0
*/
- function css_includes() {
+ public function css_includes() {
$step = $this->step();
if ( ( 1 == $step || 3 == $step ) && current_theme_supports( 'custom-header', 'header-text' ) )
*
* @since 2.6.0
*/
- function take_action() {
+ public function take_action() {
if ( ! current_user_can('edit_theme_options') )
return;
*
* @since 3.0.0
*/
- function process_default_headers() {
+ public function process_default_headers() {
global $_wp_default_headers;
if ( !empty($this->headers) )
*
* @since 3.0.0
*/
- function show_header_selector( $type = 'default' ) {
+ public function show_header_selector( $type = 'default' ) {
if ( 'default' == $type ) {
$headers = $this->default_headers;
} else {
*
* @since 2.1.0
*/
- function js() {
+ public function js() {
$step = $this->step();
if ( ( 1 == $step || 3 == $step ) && current_theme_supports( 'custom-header', 'header-text' ) )
$this->js_1();
*
* @since 2.6.0
*/
- function js_1() { ?>
+ public function js_1() {
+ $default_color = '';
+ if ( current_theme_supports( 'custom-header', 'default-text-color' ) ) {
+ $default_color = get_theme_support( 'custom-header', 'default-text-color' );
+ if ( $default_color && false === strpos( $default_color, '#' ) ) {
+ $default_color = '#' . $default_color;
+ }
+ }
+ ?>
+
<script type="text/javascript">
/* <![CDATA[ */
(function($){
- var default_color = '#<?php echo get_theme_support( 'custom-header', 'default-text-color' ); ?>',
+ var default_color = '<?php echo $default_color; ?>',
header_text_fields;
function pickColor(color) {
*
* @since 2.6.0
*/
- function js_2() { ?>
+ public function js_2() { ?>
<script type="text/javascript">
/* <![CDATA[ */
function onEndCrop( coords ) {
*
* @since 2.1.0
*/
- function step_1() {
+ public function step_1() {
$this->process_default_headers();
?>
<th scope="row"><?php _e( 'Text Color' ); ?></th>
<td>
<p>
-<?php
-$header_textcolor = display_header_text() ? get_header_textcolor() : get_theme_support( 'custom-header', 'default-text-color' );
-$default_color = '';
-if ( current_theme_supports( 'custom-header', 'default-text-color' ) ) {
- $default_color = '#' . get_theme_support( 'custom-header', 'default-text-color' );
- $default_color_attr = ' data-default-color="' . esc_attr( $default_color ) . '"';
- echo '<input type="text" name="text-color" id="text-color" value="#' . esc_attr( $header_textcolor ) . '"' . $default_color_attr . ' />';
- if ( $default_color )
- echo ' <span class="description hide-if-js">' . sprintf( _x( 'Default: %s', 'color' ), $default_color ) . '</span>';
-}
-?>
+ <?php
+ $default_color = '';
+ if ( current_theme_supports( 'custom-header', 'default-text-color' ) ) {
+ $default_color = get_theme_support( 'custom-header', 'default-text-color' );
+ if ( $default_color && false === strpos( $default_color, '#' ) ) {
+ $default_color = '#' . $default_color;
+ }
+ }
+
+ $default_color_attr = $default_color ? ' data-default-color="' . esc_attr( $default_color ) . '"' : '';
+
+ $header_textcolor = display_header_text() ? get_header_textcolor() : get_theme_support( 'custom-header', 'default-text-color' );
+ if ( $header_textcolor && false === strpos( $header_textcolor, '#' ) ) {
+ $header_textcolor = '#' . $header_textcolor;
+ }
+
+ echo '<input type="text" name="text-color" id="text-color" value="' . esc_attr( $header_textcolor ) . '"' . $default_color_attr . ' />';
+ if ( $default_color ) {
+ echo ' <span class="description hide-if-js">' . sprintf( _x( 'Default: %s', 'color' ), esc_html( $default_color ) ) . '</span>';
+ }
+ ?>
</p>
</td>
</tr>
*
* @since 2.1.0
*/
- function step_2() {
+ public function step_2() {
check_admin_referer('custom-header-upload', '_wpnonce-custom-header-upload');
if ( ! current_theme_supports( 'custom-header', 'uploads' ) )
wp_die( __( 'Cheatin’ uh?' ) );
if ( empty( $_POST ) && isset( $_GET['file'] ) ) {
$attachment_id = absint( $_GET['file'] );
$file = get_attached_file( $attachment_id, true );
- $url = wp_get_attachment_image_src( $attachment_id, 'full');
+ $url = wp_get_attachment_image_src( $attachment_id, 'full' );
$url = $url[0];
} elseif ( isset( $_POST ) ) {
- extract($this->step_2_manage_upload());
+ $data = $this->step_2_manage_upload();
+ $attachment_id = $data['attachment_id'];
+ $file = $data['file'];
+ $url = $data['url'];
+ $type = $data['type'];
}
if ( file_exists( $file ) ) {
*
* @since 3.4.0
*/
- function step_2_manage_upload() {
+ public function step_2_manage_upload() {
$overrides = array('test_form' => false);
$uploaded_file = $_FILES['import'];
*
* @since 2.1.0
*/
- function step_3() {
+ public function step_3() {
check_admin_referer( 'custom-header-crop-image' );
if ( ! current_theme_supports( 'custom-header', 'uploads' ) )
$url = $object['guid'];
$this->set_header_image( compact( 'url', 'attachment_id', 'width', 'height' ) );
- // cleanup
+ // Cleanup.
$medium = str_replace( basename( $original ), 'midsize-' . basename( $original ), $original );
if ( file_exists( $medium ) ) {
/**
*
* @since 2.1.0
*/
- function finished() {
+ public function finished() {
$this->updated = true;
$this->step_1();
}
*
* @since 2.1.0
*/
- function admin_page() {
+ public function admin_page() {
if ( ! current_user_can('edit_theme_options') )
wp_die(__('You do not have permission to customize headers.'));
$step = $this->step();
*
* @since 3.4.0
*/
- function attachment_fields_to_edit( $form_fields ) {
+ public function attachment_fields_to_edit( $form_fields ) {
return $form_fields;
}
*
* @since 3.4.0
*/
- function filter_upload_tabs( $tabs ) {
+ public function filter_upload_tabs( $tabs ) {
return $tabs;
}
}
/**
- * Insert an attachment & its metadata.
+ * Insert an attachment and its metadata.
*
* @param array $object Attachment object.
* @param string $cropped Cropped image URL.
$attachment_id = wp_insert_attachment( $object, $cropped );
$metadata = wp_generate_attachment_metadata( $attachment_id, $cropped );
/**
- * Allows us to insert custom meta data for an attachment.
+ * Filter the header image attachment metadata.
+ *
+ * @since 3.9.0
*
+ * @see wp_generate_attachment_metadata()
+ *
+ * @param array $metadata Attachment metadata.
*/
$metadata = apply_filters( 'wp_header_image_attachment_metadata', $metadata );
wp_update_attachment_metadata( $attachment_id, $metadata );
* Gets attachment uploaded by Media Manager, crops it, then saves it as a
* new object. Returns JSON-encoded object details.
*/
- function ajax_header_crop() {
+ public function ajax_header_crop() {
check_ajax_referer( 'image_editor-' . $_POST['id'], 'nonce' );
if ( ! current_user_can( 'edit_theme_options' ) ) {
wp_send_json_error( array( 'message' => __( 'Image could not be processed. Please go back and try again.' ) ) );
}
+ /** This filter is documented in wp-admin/custom-header.php */
$cropped = apply_filters( 'wp_create_file_in_uploads', $cropped, $attachment_id ); // For replication
$object = $this->create_attachment_object( $cropped, $attachment_id );
* Triggered when the user tries adds a new header image from the
* Media Manager, even if s/he doesn't save that change.
*/
- function ajax_header_add() {
+ public function ajax_header_add() {
check_ajax_referer( 'header-add', 'nonce' );
if ( ! current_user_can( 'edit_theme_options' ) ) {
* Triggered when the user clicks the overlay "X" button next to each image
* choice in the Customizer's Header tool.
*/
- function ajax_header_remove() {
+ public function ajax_header_remove() {
check_ajax_referer( 'header-remove', 'nonce' );
if ( ! current_user_can( 'edit_theme_options' ) ) {
wp_send_json_success();
}
- function customize_set_last_used( $wp_customize ) {
+ public function customize_set_last_used( $wp_customize ) {
$data = $wp_customize->get_setting( 'header_image_data' )->post_value();
if ( ! isset( $data['attachment_id'] ) ) {