File "class-acf-field-oembed.php"

Full path: /home/kosmetik/public_html/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-oembed.php
File size: 3.82 B
MIME-type: text/x-php
Charset: utf-8

Download   Open   Edit   Advanced Editor   Back

<?php

if (!class_exists('acf_field_oembed')) {
    class acf_field_oembed extends acf_field
    {
        function initialize()
        {
            $this->name = 'oembed';
            $this->label = __('oEmbed', 'acf');
            $this->category = 'content';
            $this->defaults = array('width' => '', 'height' => '');
            $this->width = 640;
            $this->height = 390;
            add_action('wp_ajax_acf/fields/oembed/search', array($this, 'ajax_query'));
            add_action('wp_ajax_nopriv_acf/fields/oembed/search', array($this, 'ajax_query'));
        }
        function prepare_field($field)
        {
            if (!$field['width']) {
                $field['width'] = $this->width;
            }
            if (!$field['height']) {
                $field['height'] = $this->height;
            }
            return $field;
        }
        function wp_oembed_get($url = '', $width = 0, $height = 0)
        {
            $embed = '';
            $res = array('width' => $width, 'height' => $height);
            $embed = @wp_oembed_get($url, $res);
            if (!$embed) {
                global $wp_embed;
                $embed = $wp_embed->shortcode($res, $url);
            }
            return $embed;
        }
        function ajax_query()
        {
            if (!acf_verify_ajax()) {
                die;
            }
            $response = $this->get_ajax_query($_POST);
            wp_send_json($response);
        }
        function get_ajax_query($args = array())
        {
            $args = acf_parse_args($args, array('s' => '', 'field_key' => ''));
            $field = acf_get_field($args['field_key']);
            if (!$field) {
                return false;
            }
            $field = $this->prepare_field($field);
            $response = array('url' => $args['s'], 'html' => $this->wp_oembed_get($args['s'], $field['width'], $field['height']));
            return $response;
        }
        function render_field($field)
        {
            $atts = array('class' => 'acf-oembed');
            if ($field['value']) {
                $atts['class'] .= ' has-value';
            }
            ?>
<div <?php 
            acf_esc_attr_e($atts);
            ?>>
	
			<?php 
            acf_hidden_input(array('class' => 'input-value', 'name' => $field['name'], 'value' => $field['value']));
            ?>
	
	<div class="title">
			<?php 
            acf_text_input(array('class' => 'input-search', 'value' => $field['value'], 'placeholder' => __('Enter URL', 'acf'), 'autocomplete' => 'off'));
            ?>
		<div class="acf-actions -hover">
			<a data-name="clear-button" href="#" class="acf-icon -cancel grey"></a>
		</div>
	</div>
	
	<div class="canvas">
		<div class="canvas-media">
			<?php 
            if ($field['value']) {
                echo $this->wp_oembed_get($field['value'], $field['width'], $field['height']);
            }
            ?>
		</div>
		<i class="acf-icon -picture hide-if-value"></i>
	</div>
	
</div>
			<?php 
        }
        function render_field_settings($field)
        {
            acf_render_field_setting($field, array('label' => __('Embed Size', 'acf'), 'type' => 'text', 'name' => 'width', 'prepend' => __('Width', 'acf'), 'append' => 'px', 'placeholder' => $this->width));
            acf_render_field_setting($field, array('label' => __('Embed Size', 'acf'), 'type' => 'text', 'name' => 'height', 'prepend' => __('Height', 'acf'), 'append' => 'px', 'placeholder' => $this->height, '_append' => 'width'));
        }
        function format_value($value, $post_id, $field)
        {
            if (empty($value)) {
                return $value;
            }
            $field = $this->prepare_field($field);
            $value = $this->wp_oembed_get($value, $field['width'], $field['height']);
            return $value;
        }
    }
    acf_register_field_type('acf_field_oembed');
}