File "ae-custom-field.php"
Full path: /home/kosmetik/public_html/wp-content/plugins/anywhere-elementor-pro.2.15.5/includes/modules/custom-field/widgets/ae-custom-field.php
File
size: 42.4 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
namespace Aepro\Modules\CustomField\Widgets;
use Aepro\Aepro;
use Aepro\Base\Widget_Base;
use Elementor\Controls_Manager;
use Elementor\Scheme_Color;
use Elementor\Group_Control_Typography;
use Elementor\Scheme_Typography;
use Elementor\Group_Control_Image_Size;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Box_Shadow;
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
class AeCustomField extends Widget_Base {
public function get_name() {
return 'ae-custom-field';
}
public function get_title() {
return __( 'AE - Custom Field', 'ae-pro' );
}
public function get_icon() {
return 'eicon-gallery-grid';
}
public function get_categories() {
return [ 'ae-template-elements' ];
}
protected function _register_controls() {
$this->start_controls_section(
'section_title',
[
'label' => __( 'Custom Field', 'ae-pro' ),
]
);
$this->add_control(
'custom-field',
[
'label' => __( 'Name', 'ae-pro' ),
'type' => Controls_Manager::TEXT,
'placeholder' => __( 'Enter your custom field name', 'ae-pro' ),
'default' => __( 'my_key', 'ae-pro' ),
]
);
$this->add_control(
'cf_type',
[
'label' => __( 'Type', 'ae-pro' ),
'type' => Controls_Manager::SELECT,
'options' => [
'text' => __( 'Default', 'ae-pro' ),
'html' => __( 'Html', 'ae-pro' ),
'link' => __( 'Link', 'ae-pro' ),
'image' => __( 'Image', 'ae-pro' ),
'video' => __( 'Video', 'ae-pro' ),
'audio' => __( 'Audio', 'ae-pro' ),
'oembed' => __( 'oEmbed', 'ae-pro' ),
'date' => __( 'Date', 'ae-pro')
],
'default' => 'text'
]
);
$this->add_control(
'link_type',
[
'label' => __('Link Type', 'ae-pro'),
'type' => Controls_Manager::SELECT,
'options' => [
'default' => __('Default', 'ae-pro'),
'email' => __('Email', 'ae-pro'),
'tel' => __('Telephone', 'ae-pro')
],
'default' => 'default',
'condition' => [
'cf_type' => 'link',
]
]
);
if(class_exists('acf')){
$this->add_control(
'acf_support',
[
'label' => __('ACF Formatting','ae-pro'),
'type' => Controls_Manager::SWITCHER,
'label_off' => __( 'No', 'ae-pro' ),
'label_on' => __( 'Yes', 'ae-pro' ),
'condition' => [
'cf_type' => ['text','link', 'audio', 'date']
],
]
);
}
$date_format = Aepro::$_helper->ae_get_date_format();
$date_format['default'] = 'Default';
$this->add_control(
'date_format',
[
'label' => __( 'Date format', 'ae-pro' ),
'type' => Controls_Manager::SELECT,
'label_block' => true,
'options' => $date_format,
'default' => 'F j, Y',
'condition' => [
'acf_support' => '',
'cf_type' => 'date'
],
'description' => '<a href="https://codex.wordpress.org/Formatting_Date_and_Time" target="_blank"> Click here</a> for documentation on date and time formatting.'
]
);
$this->add_control(
'date_custom_format',
[
'label' => __( 'Date Format', 'ae-pro' ),
'type' => Controls_Manager::TEXT,
'placeholder' => __( 'Enter Date Format', 'ae-pro' ),
'default' => 'y:m:d',
'condition' => [
'date_format' => 'custom'
]
]
);
$this->add_control(
'cf_video_type',
[
'label' => __( 'Video Type', 'ae-pro' ),
'type' => Controls_Manager::SELECT,
'options' => [
'youtube' => __( 'Youtube Video', 'ae-pro' ),
'vimeo' => __( 'Vimeo Video', 'ae-pro' ),
],
'default' => 'youtube',
'condition' => [
'cf_type' => 'video',
]
]
);
$this->add_control(
'aspect_ratio',
[
'label' => __( 'Aspect Ratio', 'ae-pro' ),
'type' => Controls_Manager::SELECT,
'frontend_available' => true,
'options' => [
'169' => '16:9',
'43' => '4:3',
'32' => '3:2',
],
'default' => '169',
'condition' => [
'cf_type' => 'video',
]
]
);
$this->youtube_video_options();
$this->vimeo_video_options();
$this->add_control(
'link_text_type',
[
'label' => __('Links To','ae-pro'),
'type' => Controls_Manager::SELECT,
'options' => [
'static' => __('Static','ae-pro'),
'custom_field' => __('Custom Field','ae-pro'),
'post' => __('Post', 'ae-pro')
],
'default' => 'static',
'condition' => [
'cf_type' => 'link',
]
]
);
$this->add_control(
'cf_link_text',
[
'label' => __( 'Static Text', 'ae-pro' ),
'type' => Controls_Manager::TEXT,
'placeholder' => __( 'Enter Link Text', 'ae-pro' ),
'default' => __( '', 'ae-pro' ),
'condition' => [
'cf_type' => 'link',
'link_text_type' => 'static'
]
]
);
$this->add_control(
'cf_link_dynamic_text',
[
'label' => __( 'Enter Field Key', 'ae-pro' ),
'type' => Controls_Manager::TEXT,
'placeholder' => __( 'Enter Field Key', 'ae-pro' ),
'default' => __( '', 'ae-pro' ),
'condition' => [
'cf_type' => 'link',
'link_text_type' => 'custom_field'
],
'description' => __( 'Data from this custom field will be used for anchor text', 'ae-pro')
]
);
$this->add_control(
'cf_link_target',
[
'label' => __('Open in new tab','ae-pro'),
'type' => Controls_Manager::SWITCHER,
'label_off' => __( 'No', 'ae-pro' ),
'label_on' => __( 'Yes', 'ae-pro' ),
'condition' => [
'cf_type' => ['link', 'image'],
]
]
);
$this->add_control(
'cf_link_download',
[
'label' => __('Download on Click', 'ae-pro'),
'type' => Controls_Manager::SWITCHER,
'label_off' => __( 'No', 'ae-pro' ),
'label_on' => __( 'Yes', 'ae-pro' ),
'return_value' => 1,
'default' => __('label_off', 'ae-pro'),
'condition' => [
'cf_type' => ['link'],
]
]
);
$this->add_control(
'cf_label',
[
'label' => __( 'Label', 'ae-pro' ),
'type' => Controls_Manager::TEXT,
'placeholder' => __( 'Enter Label', 'ae-pro' ),
'default' => __( '', 'ae-pro' ),
'condition' => [
'cf_type' => ['text','link', 'date'],
]
]
);
$this->add_control(
'cf_icon',
[
'label' => __( 'Icon', 'ae-pro' ),
'type' => Controls_Manager::ICON,
'label_block' => true,
'default' => '',
'condition' => [
'cf_type' => ['text','link', 'date'],
]
]
);
$this->add_control(
'header_size',
[
'label' => __( 'HTML Tag', 'ae-pro' ),
'type' => Controls_Manager::SELECT,
'options' => [
'h1' => __( 'H1', 'ae-pro' ),
'h2' => __( 'H2', 'ae-pro' ),
'h3' => __( 'H3', 'ae-pro' ),
'h4' => __( 'H4', 'ae-pro' ),
'h5' => __( 'H5', 'ae-pro' ),
'h6' => __( 'H6', 'ae-pro' ),
'div' => __( 'div', 'ae-pro' ),
'span' => __( 'span', 'ae-pro' ),
'p' => __( 'p', 'ae-pro' ),
],
'default' => 'h3',
'condition' => [
'cf_type' => ['text', 'date'],
]
]
);
$this->add_responsive_control(
'align',
[
'label' => __( 'Alignment', 'ae-pro' ),
'type' => Controls_Manager::CHOOSE,
'options' => [
'left' => [
'title' => __( 'Left', 'ae-pro' ),
'icon' => 'fa fa-align-left',
],
'center' => [
'title' => __( 'Center', 'ae-pro' ),
'icon' => 'fa fa-align-center',
],
'right' => [
'title' => __( 'Right', 'ae-pro' ),
'icon' => 'fa fa-align-right',
],
],
'default' => '',
'selectors' => [
'{{WRAPPER}}' => 'text-align: {{VALUE}};',
],
'condition'=> [
'cf_type!'=>'video',
]
]
);
$this->add_control(
'links_to',
[
'type' => Controls_Manager::SELECT,
'label' => __('Link to', 'ae-pro'),
'options' => [
'' => __('None', 'ae-pro'),
'post' => __('Post', 'ae-pro'),
'media' => __('Full Image', 'ae-pro'),
'static' => __( 'Static URL', 'ae-pro' ),
'custom_field' => __( 'Custom Field', 'ae-pro' ),
],
'default' => '',
'condition' => [
'cf_type' => 'image',
]
]
);
$this->add_control(
'cf_link_image',
[
'label' => __( 'Static URL', 'ae-pro' ),
'type' => Controls_Manager::TEXT,
'placeholder' => __( 'Enter URL', 'ae-pro' ),
'default' => __( '', 'ae-pro' ),
'condition' => [
'cf_type' => 'image',
'links_to' => 'static'
]
]
);
$this->add_control(
'cf_link_dynamic_image',
[
'label' => __( 'Enter Field Key', 'ae-pro' ),
'type' => Controls_Manager::TEXT,
'placeholder' => __( 'Enter Field Key', 'ae-pro' ),
'default' => __( '', 'ae-pro' ),
'condition' => [
'cf_type' => 'image',
'links_to' => 'custom_field'
],
'description' => __( 'Data from this custom field will be used for image link', 'ae-pro')
]
);
$this->add_group_control(
Group_Control_Image_Size::get_type(),
[
'name' => 'image', // Actually its `image_size`
'label' => __( 'Image Size', 'ae-pro' ),
'default' => 'large',
'exclude' => [ 'custom' ],
'condition' => [
'cf_type' => 'image',
]
]
);
$this->end_controls_section();
$this->start_controls_section(
'section_custom_field_style',
[
'label' => __( 'Custom Field', 'ae-pro' ),
'tab' => Controls_Manager::TAB_STYLE,
'condition'=> [
'cf_type!'=>'video',
]
]
);
$this->add_control(
'custom_field_color',
[
'label' => __( 'Color', 'ae-pro' ),
'type' => Controls_Manager::COLOR,
'scheme' => [
'type' => Scheme_Color::get_type(),
'value' => Scheme_Color::COLOR_4,
],
'selectors' => [
'{{WRAPPER}} .ae-element-custom-field' => 'color: {{VALUE}};',
],
'condition' => [
'cf_type' => ['text','html','link', 'date'],
],
]
);
$this->add_control(
'cf_hover_color',
[
'label' => __( 'Text Hover Color', 'ae-pro' ),
'type' => Controls_Manager::COLOR,
'selectors' => [
'{{WRAPPER}} .ae-element-custom-field:hover' => 'color: {{VALUE}};',
],
'condition' => [
'cf_type' => ['text','link', 'date'],
],
]
);
$this->add_group_control(
Group_Control_Typography::get_type(),
[
'name' => 'typography',
'scheme' => Scheme_Typography::TYPOGRAPHY_4,
'selector' => '{{WRAPPER}} .ae-element-custom-field',
'condition' => [
'cf_type' => ['text','link','html', 'date'],
],
]
);
$this->add_control(
'icon_settings',
[
'label' => __( 'Icon Settings', 'ae-pro' ),
'type' => Controls_Manager::HEADING,
'separator' => 'before',
'condition' => [
'cf_icon!' => '',
'cf_type' => ['text','link', 'date'],
]
]
);
$this->add_control(
'icon_color',
[
'label' => __( 'Icon Color', 'ae-pro' ),
'type' => Controls_Manager::COLOR,
'scheme' => [
'type' => Scheme_Color::get_type(),
'value' => Scheme_Color::COLOR_1,
],
'selectors' => [
'{{WRAPPER}} .icon-wrapper i' => 'color: {{VALUE}};',
],
'condition' => [
'cf_icon!' => '',
'cf_type' => ['text','link', 'date'],
]
]
);
$this->add_control(
'icon_hover_color',
[
'label' => __( 'Icon Hover Color', 'ae-pro' ),
'type' => Controls_Manager::COLOR,
'selectors' => [
'{{WRAPPER}} .icon-wrapper i:hover' => 'color: {{VALUE}};',
],
'condition' => [
'cf_icon!' => '',
'cf_type' => ['text','link', 'date'],
]
]
);
$this->add_control(
'icon_spacing',
[
'label' => __( 'Icon Spacing', 'ae-pro' ),
'type' => Controls_Manager::SLIDER,
'range' => [
'px' => [
'min' => 6,
'max' => 300,
],
],
'selectors' => [
'{{WRAPPER}} .icon-wrapper i' => 'padding-right: {{SIZE}}{{UNIT}};',
],
'condition' => [
'cf_icon!' => '',
'cf_type' => ['text','link', 'date'],
]
]
);
$this->add_control(
'icon_size',
[
'label' => __( 'Icon Size', 'ae-pro' ),
'type' => Controls_Manager::SLIDER,
'range' => [
'px' => [
'min' => 6,
'max' => 300,
],
],
'selectors' => [
'{{WRAPPER}} .icon-wrapper i' => 'font-size: {{SIZE}}{{UNIT}};',
],
'condition' => [
'cf_icon!' => '',
'cf_type' => ['text','link', 'date'],
]
]
);
$this->add_control(
'cf_label_settings',
[
'label' => __( 'Label Settings', 'ae-pro' ),
'type' => Controls_Manager::HEADING,
'separator' => 'before',
'condition' => [
'cf_label!' => '',
'cf_type' => ['text','link', 'date'],
]
]
);
$this->add_control(
'cf_label_color',
[
'label' => __( 'Label Color', 'ae-pro' ),
'type' => Controls_Manager::COLOR,
'scheme' => [
'type' => Scheme_Color::get_type(),
'value' => Scheme_Color::COLOR_4,
],
'selectors' => [
'{{WRAPPER}} .ae-element-custom-field-label' => 'color: {{VALUE}};',
],
'condition' => [
'cf_label!' => '',
'cf_type' => ['text','link', 'date'],
]
]
);
$this->add_group_control(
Group_Control_Typography::get_type(),
[
'name' => 'cf_label_typography',
'label' => __( 'Label Typography', 'ae-pro' ),
'scheme' => Scheme_Typography::TYPOGRAPHY_4,
'selector' => '{{WRAPPER}} .ae-element-custom-field-label',
'condition' => [
'cf_label!' => '',
'cf_type' => ['text','link','html', 'date'],
]
]
);
$this->add_control(
'cf_spacing',
[
'label' => __( 'Label Spacing', 'ae-pro' ),
'type' => Controls_Manager::SLIDER,
'range' => [
'px' => [
'min' => 0,
'max' => 300,
],
],
'selectors' => [
'{{WRAPPER}} .ae-element-custom-field-label' => 'margin-right: {{SIZE}}{{UNIT}};',
],
'condition' => [
'cf_type' => ['text','link', 'date'],
]
]
);
$this->add_control(
'cf_space',
[
'label' => __( 'Size (%)', 'ae-pro' ),
'type' => Controls_Manager::SLIDER,
'default' => [
'size' => 100,
'unit' => '%',
],
'size_units' => [ '%' ],
'range' => [
'%' => [
'min' => 1,
'max' => 100,
],
],
'selectors' => [
'{{WRAPPER}} .ae-element-custom-field img' => 'max-width: {{SIZE}}{{UNIT}};',
],
'condition' => [
'cf_type' => 'image',
]
]
);
$this->add_control(
'cf_opacity',
[
'label' => __( 'Opacity (%)', 'ae-pro' ),
'type' => Controls_Manager::SLIDER,
'default' => [
'size' => 1,
],
'range' => [
'px' => [
'max' => 1,
'min' => 0.10,
'step' => 0.01,
],
],
'selectors' => [
'{{WRAPPER}} .ae-element-custom-field img' => 'opacity: {{SIZE}};',
],
'condition' => [
'cf_type' => 'image',
]
]
);
$this->add_control(
'cf_bg',
[
'label' => __( 'Background Color', 'ae-pro' ),
'type' => Controls_Manager::COLOR,
'selectors' => [
'{{WRAPPER}} .ae-element-custom-field' => 'background-color: {{VALUE}};',
],
'condition' => [
'cf_type!' => 'video',
]
]
);
$this->add_group_control(
Group_Control_Border::get_type(),
[
'name' => 'border',
'label' => __( 'Border', 'ae-pro' ),
'selector' => '{{WRAPPER}} .elementor-widget-container > div:not(.cf-type-image) > .ae-element-custom-field, {{WRAPPER}} .cf-type-image img',
'condition' => [
'cf_type!' => 'video',
]
]
);
$this->add_control(
'image_border_radius',
[
'label' => __( 'Border Radius', 'ae-pro' ),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => [ 'px', '%' ],
'selectors' => [
'{{WRAPPER}} .ae-element-custom-field, {{WRAPPER}} .ae-element-custom-field img' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
],
'condition' => [
'cf_type!' => 'video',
]
]
);
$this->add_group_control(
Group_Control_Box_Shadow::get_type(),
[
'name' => 'item_box_shadow',
'label' => __( 'Item Shadow', 'ae-pro' ),
'selector' => '{{WRAPPER}} .ae-element-custom-field img',
]
);
$this->add_control(
'cf_text_padding',
[
'label' => __( 'Padding', 'ae-pro' ),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => [ 'px', 'em', '%' ],
'selectors' => [
'{{WRAPPER}} .ae-element-custom-field' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
],
'condition' => [
'cf_type!' => 'video',
]
]
);
$this->end_controls_section();
}
protected function render()
{
$settings = $this->get_settings();
if(!isset($settings['cf_type']) || $settings['cf_type'] == ''){
$settings['cf_type'] = 'text';
}
$post_data = Aepro::$_helper->get_demo_post_data();
$post_id = $post_data->ID;
$post_title = $post_data->post_title;
$custom_field = $settings['custom-field'];
if(class_exists('acf') && in_array($settings['cf_type'],['text','link','audio', 'date']) && $settings['acf_support'] == 'yes'){
$custom_field_val = get_field($custom_field,$post_id);
}else{
$custom_field_val = get_post_meta($post_id,$custom_field,true);
}
$cf_link_dynamic_text = '';
if($settings['cf_link_dynamic_text'] != '') {
$cf_link_dynamic_text = get_post_meta( $post_id, $settings['cf_link_dynamic_text'], true );
}
$cf_link_dynamic_image = '';
if($settings['cf_type'] == 'image' && $settings['links_to'] == 'custom_field' && $settings['cf_link_dynamic_image'] != ''){
$cf_link_dynamic_image = get_post_meta( $post_id, $settings['cf_link_dynamic_image'], true );
}
$repeater = Aepro::$_helper->is_repeater_block_layout();
if($repeater['is_repeater']){
if(isset($repeater['field'])){
$repeater_field = get_field($repeater['field'], $post_id);
$custom_field_val = $repeater_field[0][$custom_field];
//print_r($repeater_field);
if($settings['cf_type'] == 'link' && $settings['cf_link_dynamic_text'] != '') {
$cf_link_dynamic_text = $repeater_field[0][ $settings['cf_link_dynamic_text'] ];
}
if($settings['cf_type'] == 'image' && $settings['links_to'] == 'custom_field' && $settings['cf_link_dynamic_image'] != ''){
$cf_link_dynamic_image = $repeater_field[0][ $settings['cf_link_dynamic_image'] ];
}
}else {
$custom_field_val = get_sub_field($custom_field);
if($settings['cf_type'] == 'link') {
$cf_link_dynamic_text = get_sub_field( $settings['cf_link_dynamic_text'] );
}
if($settings['cf_type'] == 'image' && $settings['links_to'] == 'custom_field' && $settings['cf_link_dynamic_image'] != ''){
$cf_link_dynamic_image = get_sub_field( $settings['cf_link_dynamic_image'] );
}
}
}
$this->add_render_attribute( 'cf-wrapper','class','cf-type-'.$settings['cf_type'] );
$this->add_render_attribute( 'cf-wrapper','class','ae-cf-wrapper' );
$this->add_render_attribute( 'custom-field-class', 'class', 'ae-element-custom-field' );
$this->add_render_attribute( 'custom-field-label-class', 'class', 'ae-element-custom-field-label' );
$this->add_render_attribute( 'post-cf-icon-class','class','icon-wrapper' );
$this->add_render_attribute( 'post-cf-icon-class','class','ae-element-custom-field-icon' );
$this->add_render_attribute( 'post-cf-icon','class',$settings['cf_icon'] );
if(empty($custom_field_val)){
$this->add_render_attribute('cf-wrapper','class','hide');
}
if($settings['cf_link_target'] == 'yes'){
$this->add_render_attribute( 'custom-field-class', 'target', '_blank' );
}
if($settings['cf_link_download'] == '1'){
$this->add_render_attribute( 'custom-field-class', 'download', '' );
}
$cf_type = $settings['cf_type'];
$eid = $this->get_id();
$custom_field_html = '';
switch ($cf_type) {
case "html": if(!empty($custom_field_val)){
$custom_field_html = '<div '.$this->get_render_attribute_string( 'custom-field-class' ).'>'.wpautop(do_shortcode($custom_field_val)).'</div>';
}
break;
case "link": if($settings['link_type'] == 'email'){
$custom_field_val = 'mailto:'.$custom_field_val;
}elseif($settings['link_type'] == 'tel'){
$custom_field_val = 'tel:'.$custom_field_val;
}
if(!empty($settings['cf_link_text']) && $settings['link_text_type'] == 'static'){
$custom_field_html = '<a '.$this->get_render_attribute_string( 'custom-field-class' ).' href="'.$custom_field_val.'">'.$settings['cf_link_text'].'</a>';
}else if(!empty($cf_link_dynamic_text) && $settings['link_text_type'] == 'custom_field') {
$custom_field_html = '<a '.$this->get_render_attribute_string( 'custom-field-class' ).' href="'.$custom_field_val.'">'. $cf_link_dynamic_text .'</a>';
}else{
if($settings['link_type'] != 'default'){
$custom_field_html = '<a '.$this->get_render_attribute_string( 'custom-field-class' ).' href="'.$custom_field_val.'">'. get_post_meta($post_id,$custom_field,true) .'</a>';
}else{
$custom_field_html = '<a '.$this->get_render_attribute_string( 'custom-field-class' ).' href="'.$custom_field_val.'">'.$custom_field_val.'</a>';
}
}
if($settings['link_text_type'] == 'post'){
$custom_field_html = '<a '.$this->get_render_attribute_string( 'custom-field-class' ).' href="'. get_permalink($post_id) .'">'.$custom_field_val.'</a>';
}
break;
case "image": $post_image_size = $settings['image_size'];
if($settings['links_to'] == 'post'){
$post_link = get_permalink($post_id );
}elseif($settings['links_to'] == 'media'){
$media_link = wp_get_attachment_image_src($custom_field_val ,'full');
$post_link = $media_link[0];
}elseif($settings['links_to'] == 'static'){
$post_link = $settings['cf_link_image'];
}elseif($settings['links_to'] == 'custom_field'){
$post_link = $cf_link_dynamic_image;
}
if(is_numeric($custom_field_val)){
$custom_field_html = '<div '.$this->get_render_attribute_string( 'custom-field-class' ).'>';
if($settings['links_to'] != '') {
$image_target = '';
if($settings['cf_link_target'] == 'yes'){
$image_target = ' target="_blank"';
}
$custom_field_html .= '<a href="' . $post_link . '" title="' . $post_title . '"' . $image_target . '>';
}
$custom_field_html .= wp_get_attachment_image( $custom_field_val, $post_image_size );
if($settings['links_to'] != ''){
$custom_field_html .= '</a>';
}
$custom_field_html .= '</div>';
}else{
$custom_field_html = '<div '.$this->get_render_attribute_string( 'custom-field-class' ).'>';
if($settings['links_to'] != '') {
$custom_field_html .= '<a href="' . $post_link . '" title="' . $post_title . '">';
}
$custom_field_html .= '<img src="'.$custom_field_val.'" />';
if($settings['links_to'] != ''){
$custom_field_html .= '</a>';
}
$custom_field_html .= '</div>';
}
break;
case "video": add_filter( 'oembed_result', [ $this, 'ae_filter_oembed_result' ], 50, 3 );
$custom_field_html = wp_oembed_get( $custom_field_val, wp_embed_defaults() );
$custom_field_html .= "<script type='text/javascript'>
jQuery(document).ready(function(){
jQuery(document).trigger('elementor/render/cf-video',['".$eid."','".$settings['aspect_ratio']."']);
});
jQuery(window).resize(function(){
jQuery(document).trigger('elementor/render/cf-video',['".$eid."','".$settings['aspect_ratio']."']);
});
jQuery(document).trigger('elementor/render/cf-video',['".$eid."','".$settings['aspect_ratio']."']);
</script>";
remove_filter( 'oembed_result', [ $this, 'ae_filter_oembed_result' ], 50 );
break;
case "audio":
$custom_field_html = wp_audio_shortcode([
'src' => $custom_field_val
]);
break;
case "oembed": if($repeater['is_repeater']){
$custom_field_html = $custom_field_val;
}else{
$custom_field_html = wp_oembed_get( $custom_field_val, wp_embed_defaults() );
}
break;
case "date" : if(empty($custom_field_val)){
break;
}
if($settings['acf_support'] == ''){
$format = "g:i A";
if($settings['date_format']=='custom') {
$format = $settings['date_custom_format'];
}elseif($settings['date_format'] == 'default'){
$format = get_option( 'date_format' );
}else{
$format = $settings['date_format'];
}
$custom_field_html = date_i18n( $format, strtotime( $custom_field_val ) );
}else{
$custom_field_html = $custom_field_val;
}
$custom_field_html = sprintf( '<%1$s %2$s>%3$s</%1$s>', $settings['header_size'], $this->get_render_attribute_string( 'custom-field-class' ), do_shortcode($custom_field_html) );
break;
default:
$custom_field_html = sprintf( '<%1$s %2$s>%3$s</%1$s>', $settings['header_size'], $this->get_render_attribute_string( 'custom-field-class' ), do_shortcode($custom_field_val) );
break;
}?>
<div <?php echo $this->get_render_attribute_string('cf-wrapper');?>>
<?php if(($settings['cf_type']=='text') || ($settings['cf_type']=='link') || ($settings['cf_type']=='date')){ ?>
<?php if(!empty($settings['cf_icon']) && !empty($custom_field_val)){ ?>
<span <?php echo $this->get_render_attribute_string( 'post-cf-icon-class' ); ?>>
<i <?php echo $this->get_render_attribute_string( 'post-cf-icon' ); ?>></i>
</span>
<?php }
if(!empty($settings['cf_label']) && !empty($custom_field_val)){ ?>
<span <?php echo $this->get_render_attribute_string('custom-field-label-class');?>>
<?php echo $settings['cf_label'];?>
</span>
<?php }
}
echo $custom_field_html;?>
</div>
<?php
}
public function ae_filter_oembed_result($html){
$settings = $this->get_settings();
$params = [];
if ( 'youtube' === $settings['cf_video_type'] ) {
$youtube_options = [ 'autoplay', 'rel', 'controls', 'showinfo' ];
foreach ( $youtube_options as $option ) {
//if ( 'autoplay' === $option && $this->has_image_overlay() )
// continue;
$value = ( 'yes' === $settings[ 'cf_yt_' . $option ] ) ? '1' : '0';
$params[ $option ] = $value;
}
$params['wmode'] = 'opaque';
}
if ( 'vimeo' === $settings['cf_video_type'] ) {
$vimeo_options = [ 'autoplay', 'loop', 'title', 'portrait', 'byline', 'muted', 'background' ];
foreach ( $vimeo_options as $option ) {
//if ( 'autoplay' === $option && $this->has_image_overlay() )
// continue;
$value = ( 'yes' === $settings[ 'vimeo_' . $option ] ) ? '1' : '0';
$params[ $option ] = $value;
if($settings['vimeo_background' ] == 'yes'){
unset($params ['autoplay']);
unset($params ['loop']);
unset($params ['title']);
}
}
$params['color'] = str_replace( '#', '', $settings['vimeo_color'] );
}
if ( ! empty( $params ) ) {
preg_match( '/<iframe.*src=\"(.*)\".*><\/iframe>/isU', $html, $matches );
$url = esc_url( add_query_arg( $params, $matches[1] ) );
$html = str_replace( $matches[1], $url, $html );
}
return $html;
}
public function youtube_video_options(){
$this->add_control(
'heading_youtube',
[
'label' => __( 'Youtube Video Options', 'ae-pro' ),
'type' => Controls_Manager::HEADING,
'separator' => 'before',
'condition' => [
'cf_type' => 'video',
'cf_video_type' => 'youtube',
],
]
);
// YouTube
$this->add_control(
'cf_yt_autoplay',
[
'label' => __( 'Autoplay', 'ae-pro' ),
'type' => Controls_Manager::SWITCHER,
'label_off' => __( 'No', 'ae-pro' ),
'label_on' => __( 'Yes', 'ae-pro' ),
'condition' => [
'cf_type' => 'video',
'cf_video_type' => 'youtube',
],
]
);
$this->add_control(
'cf_yt_rel',
[
'label' => __( 'Suggested Videos', 'ae-pro' ),
'type' => Controls_Manager::SWITCHER,
'label_off' => __( 'Hide', 'ae-pro' ),
'label_on' => __( 'Show', 'ae-pro' ),
'condition' => [
'cf_type' => 'video',
'cf_video_type' => 'youtube',
],
]
);
$this->add_control(
'cf_yt_controls',
[
'label' => __( 'Player Control', 'ae-pro' ),
'type' => Controls_Manager::SWITCHER,
'label_off' => __( 'Hide', 'ae-pro' ),
'label_on' => __( 'Show', 'ae-pro' ),
'default' => 'yes',
'condition' => [
'cf_type' => 'video',
'cf_video_type' => 'youtube',
],
]
);
$this->add_control(
'cf_yt_showinfo',
[
'label' => __( 'Player Title & Actions', 'ae-pro' ),
'type' => Controls_Manager::SWITCHER,
'label_off' => __( 'Hide', 'ae-pro' ),
'label_on' => __( 'Show', 'ae-pro' ),
'default' => 'yes',
'condition' => [
'cf_type' => 'video',
'cf_video_type' => 'youtube',
],
]
);
}
public function vimeo_video_options(){
$this->add_control(
'heading_vimeo',
[
'label' => __( 'Vimeo Video Options', 'ae-pro' ),
'type' => Controls_Manager::HEADING,
'separator' => 'before',
'condition' => [
'cf_type' => 'video',
'cf_video_type' => 'vimeo',
],
]
);
// Vimeo
$this->add_control(
'vimeo_background',
[
'label' => __( 'Background Mode', 'ae-pro' ),
'type' => Controls_Manager::SWITCHER,
'label_off' => __( 'No', 'ae-pro' ),
'lablel_on' => __( 'Yes', 'ae-pro' ),
'default' => '',
'condition' => [
'cf_type' => 'video',
'cf_video_type' => 'vimeo',
]
]
);
$this->add_control(
'vimeo_autoplay',
[
'label' => __( 'Autoplay', 'ae-pro' ),
'type' => Controls_Manager::SWITCHER,
'label_off' => __( 'No', 'ae-pro' ),
'label_on' => __( 'Yes', 'ae-pro' ),
'condition' => [
'cf_type' => 'video',
'cf_video_type' => 'vimeo',
'vimeo_background' => ''
],
]
);
$this->add_control(
'vimeo_loop',
[
'label' => __( 'Loop', 'ae-pro' ),
'type' => Controls_Manager::SWITCHER,
'label_off' => __( 'No', 'ae-pro' ),
'label_on' => __( 'Yes', 'ae-pro' ),
'condition' => [
'cf_type' => 'video',
'cf_video_type' => 'vimeo',
'vimeo_background' => ''
],
]
);
$this->add_control(
'vimeo_title',
[
'label' => __( 'Intro Title', 'ae-pro' ),
'type' => Controls_Manager::SWITCHER,
'label_off' => __( 'Hide', 'ae-pro' ),
'label_on' => __( 'Show', 'ae-pro' ),
'default' => 'yes',
'condition' => [
'cf_type' => 'video',
'cf_video_type' => 'vimeo',
'vimeo_background' => ''
],
]
);
$this->add_control(
'vimeo_portrait',
[
'label' => __( 'Intro Portrait', 'ae-pro' ),
'type' => Controls_Manager::SWITCHER,
'label_off' => __( 'Hide', 'ae-pro' ),
'label_on' => __( 'Show', 'ae-pro' ),
'default' => 'yes',
'condition' => [
'cf_type' => 'video',
'cf_video_type' => 'vimeo',
'vimeo_background' => ''
],
]
);
$this->add_control(
'vimeo_byline',
[
'label' => __( 'Intro Byline', 'ae-pro' ),
'type' => Controls_Manager::SWITCHER,
'label_off' => __( 'Hide', 'ae-pro' ),
'label_on' => __( 'Show', 'ae-pro' ),
'default' => 'yes',
'condition' => [
'cf_type' => 'video',
'cf_video_type' => 'vimeo',
'vimeo_background' => ''
],
]
);
$this->add_control(
'vimeo_color',
[
'label' => __( 'Controls Color', 'ae-pro' ),
'type' => Controls_Manager::COLOR,
'scheme' => [
'type' => Scheme_Color::get_type(),
'value' => Scheme_Color::COLOR_4,
],
'condition' => [
'cf_type' => 'video',
'cf_video_type' => 'vimeo',
'vimeo_background' => ''
],
]
);
$this->add_control(
'vimeo_muted',
[
'label' => __( 'Muted', 'ae-pro' ),
'type' => Controls_Manager::SWITCHER,
'label_off' => __( 'No', 'ae-pro' ),
'lablel_on' => __( 'Yes', 'ae-pro' ),
'default' => '',
'condition' => [
'cf_type' => 'video',
'cf_video_type' => 'vimeo',
]
]
);
}
}