113 lines
2.6 KiB
PHP
113 lines
2.6 KiB
PHP
<?php
|
|
/**
|
|
* Image control class. This control allows users to set an image. It passes the attachment
|
|
* ID the setting, so you'll need a custom control class if you want to store anything else,
|
|
* such as the URL or other data.
|
|
*
|
|
* @package ButterBean
|
|
* @author Justin Tadlock <justin@justintadlock.com>
|
|
* @copyright Copyright (c) 2015-2016, Justin Tadlock
|
|
* @link https://github.com/justintadlock/butterbean
|
|
* @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
|
*/
|
|
|
|
/**
|
|
* Image control class.
|
|
*
|
|
* @since 1.0.0
|
|
* @access public
|
|
*/
|
|
class ButterBean_Control_Image extends ButterBean_Control {
|
|
|
|
/**
|
|
* The type of control.
|
|
*
|
|
* @since 1.0.0
|
|
* @access public
|
|
* @var string
|
|
*/
|
|
public $type = 'image';
|
|
|
|
/**
|
|
* Array of text labels to use for the media upload frame.
|
|
*
|
|
* @since 1.0.0
|
|
* @access public
|
|
* @var string
|
|
*/
|
|
public $l10n = array();
|
|
|
|
/**
|
|
* Image size to display. If the size isn't found for the image,
|
|
* the full size of the image will be output.
|
|
*
|
|
* @since 1.0.0
|
|
* @access public
|
|
* @var string
|
|
*/
|
|
public $size = 'large';
|
|
|
|
/**
|
|
* Creates a new control object.
|
|
*
|
|
* @since 1.0.0
|
|
* @access public
|
|
* @param object $manager
|
|
* @param string $name
|
|
* @param array $args
|
|
* @return void
|
|
*/
|
|
public function __construct( $manager, $name, $args = array() ) {
|
|
parent::__construct( $manager, $name, $args );
|
|
|
|
$this->l10n = wp_parse_args(
|
|
$this->l10n,
|
|
array(
|
|
'upload' => esc_html__( 'Add image', 'butterbean' ),
|
|
'set' => esc_html__( 'Set as image', 'butterbean' ),
|
|
'choose' => esc_html__( 'Choose image', 'butterbean' ),
|
|
'change' => esc_html__( 'Change image', 'butterbean' ),
|
|
'remove' => esc_html__( 'Remove image', 'butterbean' ),
|
|
'placeholder' => esc_html__( 'No image selected', 'butterbean' )
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Enqueue scripts/styles for the control.
|
|
*
|
|
* @since 1.0.0
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
public function enqueue() {
|
|
|
|
wp_enqueue_script( 'media-views' );
|
|
}
|
|
|
|
/**
|
|
* Adds custom data to the json array.
|
|
*
|
|
* @since 1.0.0
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
public function to_json() {
|
|
parent::to_json();
|
|
|
|
$this->json['l10n'] = $this->l10n;
|
|
$this->json['size'] = $this->size;
|
|
|
|
$value = $this->get_value();
|
|
$image = $alt = '';
|
|
|
|
if ( $value ) {
|
|
$image = wp_get_attachment_image_src( absint( $value ), $this->size );
|
|
$alt = get_post_meta( absint( $value ), '_wp_attachment_image_alt', true );
|
|
}
|
|
|
|
$this->json['src'] = $image ? esc_url( $image[0] ) : '';
|
|
$this->json['alt'] = $alt ? esc_attr( $alt ) : '';
|
|
}
|
|
}
|