Create New Item
×
Item Type
File
Folder
Item Name
×
Search file in folder and subfolders...
File Manager
/
wp-content
/
plugins
/
advanced-custom-fields
/
includes
/
fields
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?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'); }