Files
DESKTOP-GBA0BK8\Admin 7c8c8b1c76 first commit
2023-04-08 12:19:53 -04:00

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 ) : '';
}
}