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