'',
'margin_right' => '',
'margin_bottom' => '',
'margin_left' => '',
'hide_on_mobile' => fusion_builder_default_visibility( 'string' ),
'class' => '',
'id' => '',
'name' => '',
'full_height' => 'no',
'offset' => '',
]
);
}
/**
* Render the parent shortcode
*
* @access public
* @param array $args Shortcode paramters.
* @param string $content Content between shortcode.
* @return string HTML output.
*/
public function render_parent( $args, $content = '' ) {
global $fusion_library;
$defaults = FusionBuilder::set_shortcode_defaults( self::get_element_defaults(), $args, 'fusion_fusionslider' );
extract( $defaults );
$defaults['margin_bottom'] = FusionBuilder::validate_shortcode_attr_value( $defaults['margin_bottom'], 'px' );
$defaults['margin_top'] = FusionBuilder::validate_shortcode_attr_value( $defaults['margin_top'], 'px' );
self::$parent_args = $defaults;
ob_start();
$term = $name;
$term_details = get_term_by( 'slug', $term, 'slide-page' );
if ( ! $term_details ) {
if ( shortcode_exists( 'fusion_alert' ) ) {
return do_shortcode( '[fusion_alert type="error"]Incorrect slider name. Please make sure to use a valid slider slug.[/fusion_alert]' );
} else {
return '
' . esc_html__( 'Incorrect slider name. Please make sure to use a valid slider slug.', 'fusion-core' ) . '
';
}
}
$slider_settings = fusion_data()->term_meta( $term_details->term_id )->get_all_meta();
if ( ! isset( $slider_settings['slider_width'] ) || '' === $slider_settings['slider_width'] ) {
$slider_settings['slider_width'] = '100%';
}
if ( ! isset( $slider_settings['slider_height'] ) || '' === $slider_settings['slider_height'] ) {
$slider_settings['slider_height'] = '300px';
}
if ( ! isset( $slider_settings['full_screen'] ) ) {
$slider_settings['full_screen'] = false;
}
if ( ! isset( $slider_settings['nav_box_width'] ) ) {
$slider_settings['nav_box_width'] = '63px';
}
if ( ! isset( $slider_settings['nav_box_height'] ) ) {
$slider_settings['nav_box_height'] = '63px';
}
if ( ! isset( $slider_settings['nav_arrow_size'] ) ) {
$slider_settings['nav_arrow_size'] = '25px';
}
if ( $slider_settings['nav_box_height'] ) {
$nav_box_height_half = intval( $slider_settings['nav_box_height'] ) / 2;
}
self::$slider_settings = $slider_settings;
$content_max_width = '';
if ( isset( $slider_settings['slider_content_width'] ) && '' !== $slider_settings['slider_content_width'] ) {
$content_max_width = 'max-width:' . $slider_settings['slider_content_width'];
}
if ( ! isset( $slider_settings['slider_indicator'] ) ) {
$slider_settings['slider_indicator'] = '';
}
if ( ! isset( $slider_settings['slider_indicator_color'] ) || '' === $slider_settings['slider_indicator_color'] ) {
$slider_settings['slider_indicator_color'] = '#ffffff';
}
$orderby = ( isset( $slider_settings['orderby'] ) ) ? $slider_settings['orderby'] : 'date';
$order = ( isset( $slider_settings['order'] ) ) ? $slider_settings['order'] : 'DESC';
$args = [
'post_type' => 'slide',
'posts_per_page' => -1,
'suppress_filters' => 0,
'orderby' => $orderby,
'order' => $order,
];
$args['tax_query'][] = [
'taxonomy' => 'slide-page',
'field' => 'slug',
'terms' => $term,
];
$query = FusionCore_Plugin::fusion_core_cached_query( $args );
if ( $query->have_posts() ) : ?>
>
';
echo '.fusion-slider-' . esc_attr( $term_details->term_id ) . ' .flex-direction-nav a {';
if ( $slider_settings['nav_box_width'] ) {
echo 'width:' . esc_attr( $slider_settings['nav_box_width'] ) . ';';
}
if ( $slider_settings['nav_box_height'] ) {
echo 'height:' . esc_attr( $slider_settings['nav_box_height'] ) . ';';
echo 'line-height:' . esc_attr( $slider_settings['nav_box_height'] ) . ';';
}
if ( $slider_settings['nav_arrow_size'] ) {
echo 'font-size:' . esc_attr( $slider_settings['nav_arrow_size'] ) . ';';
}
echo '}';
if ( 'pagination_circles' === $slider_settings['slider_indicator'] ) {
$slider_indicator_color = Fusion_Color::new_color( $slider_settings['slider_indicator_color'], 'hex' );
echo '.fusion-slider-' . esc_attr( $term_details->term_id ) . ' .flex-control-paging li a {';
echo 'background:rgba(' . esc_attr( $slider_indicator_color->red ) . ', ' . esc_attr( $slider_indicator_color->green ) . ', ' . esc_attr( $slider_indicator_color->blue ) . ', 0.6);';
echo '}';
echo '.fusion-slider-' . esc_attr( $term_details->term_id ) . ' .flex-control-paging li a.flex-active {';
echo 'background:rgba(' . esc_attr( $slider_indicator_color->red ) . ', ' . esc_attr( $slider_indicator_color->green ) . ', ' . esc_attr( $slider_indicator_color->blue ) . ', 1);';
echo '}';
}
echo '';
?>
>
have_posts() ) :
$query->the_post();
$metadata = wp_parse_args(
fusion_data()->post_meta( get_the_ID() )->get_all_meta(),
[
'type' => 'image',
'aspect_ratio' => '16:9',
'youtube_id' => '',
'vimeo_id' => '',
'mp4' => '',
'webm' => '',
'ogv' => '',
'preview_image' => '',
'video_display' => 'cover',
'video_bg_color' => '',
'mute_video' => 'no',
'autoplay_video' => 'no',
'loop_video' => 'no',
'hide_video_controls' => 'yes',
'content_alignment' => 'center',
'heading' => '',
'heading_separator' => 'none',
'heading_size' => 2,
'heading_font_size' => '',
'heading_color' => '',
'heading_bg' => 'yes',
'heading_bg_color' => '',
'caption' => '',
'caption_separator' => 'none',
'caption_size' => 3,
'caption_font_size' => '',
'caption_color' => '',
'caption_bg' => 'yes',
'caption_bg_color' => '',
'link_type' => 'button',
'slide_link' => '',
'slide_target' => 'yes',
'button_1' => '',
'button_2' => '',
]
);
foreach ( [ 'ogv', 'ogg', 'webm', 'mp4' ] as $filetype ) {
if ( ! isset( $metadata[ $filetype ] ) ) {
$metadata[ $filetype ] = '';
}
if ( is_array( $metadata[ $filetype ] ) ) {
$metadata[ $filetype ] = ( isset( $metadata[ $filetype ]['url'] ) ) ? $metadata[ $filetype ]['url'] : '';
}
}
if ( is_array( $metadata['preview_image'] ) ) {
$metadata['preview_image'] = isset( $metadata['preview_image']['url'] ) ? $metadata['preview_image']['url'] : '';
}
$background_image = '';
$background_class = '';
$img_width = '';
$image_url = [ '', '' ];
$vimeo_consent = class_exists( 'Avada_Privacy_Embeds' ) ? Avada()->privacy_embeds->get_consent( 'vimeo' ) : true;
$youtube_consent = class_exists( 'Avada_Privacy_Embeds' ) ? Avada()->privacy_embeds->get_consent( 'youtube' ) : true;
if ( isset( $metadata['type'] ) && ( 'image' === $metadata['type'] || ( 'youtube' === $metadata['type'] && ! $youtube_consent ) || ( 'vimeo' === $metadata['type'] && ! $vimeo_consent ) ) && has_post_thumbnail() ) {
$image_id = get_post_thumbnail_id();
$image_url = wp_get_attachment_image_src( $image_id, 'full', true );
$background_image = 'background-image: url(' . $image_url[0] . ');';
$background_class = 'background-image';
$img_width = $image_url[1];
}
$aspect_ratio = '16:9';
$video_attributes = '';
$youtube_attributes = '';
$vimeo_attributes = '';
$data_mute = 'no';
$data_loop = 'no';
$data_autoplay = 'no';
if ( isset( $metadata['aspect_ratio'] ) && $metadata['aspect_ratio'] ) {
$aspect_ratio = $metadata['aspect_ratio'];
}
if ( isset( $metadata['autoplay_video'] ) && 'yes' === $metadata['autoplay_video'] ) {
$video_attributes .= ' autoplay';
$youtube_attributes .= '&autoplay=1';
$vimeo_attributes .= '&autoplay=1';
$data_autoplay = 'yes';
}
if ( isset( $metadata['mute_video'] ) && 'yes' === $metadata['mute_video'] ) {
$video_attributes = 'muted';
$youtube_attributes .= '&muted=1';
$vimeo_attributes .= '&muted=1';
$data_mute = 'yes';
}
if ( isset( $metadata['loop_video'] ) && 'yes' === $metadata['loop_video'] ) {
$video_attributes .= ' loop';
$youtube_attributes .= isset( $metadata['youtube_id'] ) ? '&loop=1&playlist=' . $metadata['youtube_id'] : '&loop=1';
$vimeo_attributes .= '&loop=1';
$data_loop = 'yes';
}
if ( isset( $metadata['hide_video_controls'] ) && 'no' === $metadata['hide_video_controls'] ) {
$video_attributes .= ' controls';
$youtube_attributes .= '&controls=1';
$video_zindex = 'z-index: 1;';
} else {
$youtube_attributes .= '&controls=0';
$video_zindex = 'z-index: -99;';
}
$heading_color = ! empty( $metadata['heading_color'] ) ? $metadata['heading_color'] : '';
$heading_bg = '';
if ( isset( $metadata['heading_bg'] ) && 'yes' === $metadata['heading_bg'] ) {
$heading_bg = 'background-color: rgba(0,0,0, 0.4);';
if ( isset( $metadata['heading_bg_color'] ) && '' !== $metadata['heading_bg_color'] && class_exists( 'Fusion_Color' ) ) {
$heading_bg_color_object = Fusion_Color::new_color( $metadata['heading_bg_color'] );
if ( 1 === intval( $heading_bg_color_object->alpha ) ) {
$heading_bg_color_object = $heading_bg_color_object->get_new( 'alpha', 0.4 );
}
$heading_bg = 'background-color:' . $heading_bg_color_object->to_css_var_or_rgba();
}
}
$caption_color = ! empty( $metadata['caption_color'] ) ? $metadata['caption_color'] : '';
$caption_bg = '';
if ( isset( $metadata['caption_bg'] ) && 'yes' === $metadata['caption_bg'] ) {
$caption_bg = 'background-color: rgba(0, 0, 0, 0.4);';
if ( isset( $metadata['caption_bg_color'] ) && '' !== $metadata['caption_bg_color'] && class_exists( 'Fusion_Color' ) ) {
$caption_bg_color_object = Fusion_Color::new_color( $metadata['caption_bg_color'] );
if ( 1 === intval( $caption_bg_color_object->alpha ) ) {
$caption_bg_color_object = $caption_bg_color_object->get_new( 'alpha', 0.4 );
}
$caption_bg = 'background-color:' . $caption_bg_color_object->to_css_var_or_rgba();
}
}
$video_bg_color = '';
if ( isset( $metadata['video_bg_color'] ) && $metadata['video_bg_color'] && class_exists( 'Fusion_Color' ) ) {
$video_bg_color_object = Fusion_Color::new_color( $metadata['video_bg_color'] );
if ( 1 === intval( $video_bg_color_object->alpha ) ) {
$video_bg_color_object = $video_bg_color_object->get_new( 'alpha', 0.4 );
}
$video_bg_color = 'background-color:' . $video_bg_color_object->to_css_var_or_rgba();
}
$video = false;
if ( isset( $metadata['type'] ) ) {
if ( isset( $metadata['type'] ) && in_array( $metadata['type'], [ 'self-hosted-video', 'youtube', 'vimeo' ], true ) ) {
$video = true;
}
}
if ( isset( $metadata['type'] ) && 'self-hosted-video' === $metadata['type'] ) {
$background_class = 'self-hosted-video-bg';
}
$heading_size = 2;
if ( isset( $metadata['heading_size'] ) && $metadata['heading_size'] ) {
$heading_size = $metadata['heading_size'];
}
$heading_font_size = '60px';
$heading_line_height = '80px';
if ( isset( $metadata['heading_font_size'] ) && $metadata['heading_font_size'] ) {
$heading_font_size = false === strpos( $metadata['heading_font_size'], 'clamp(' ) ? str_replace( 'px', '', $metadata['heading_font_size'] ) . 'px' : $metadata['heading_font_size'];
$heading_line_height = false === strpos( $metadata['heading_font_size'], 'clamp(' ) ? (float) $heading_font_size * 1.2 . 'px' : '1.2';
}
$caption_size = 3;
if ( isset( $metadata['caption_size'] ) && $metadata['caption_size'] ) {
$caption_size = $metadata['caption_size'];
}
$caption_font_size = '24px';
$caption_line_height = '38px';
if ( isset( $metadata['caption_font_size'] ) && $metadata['caption_font_size'] ) {
$caption_font_size = false === strpos( $metadata['caption_font_size'], 'clamp(' ) ? str_replace( 'px', '', $metadata['caption_font_size'] ) . 'px' : $metadata['caption_font_size'];
$caption_line_height = false === strpos( $metadata['caption_font_size'], 'clamp(' ) ? (float) $caption_font_size * 1.2 . 'px' : '1.2';
}
$heading_title_sc_wrapper_class = '';
$caption_title_sc_wrapper_class = '';
if ( ! isset( $metadata['heading_separator'] ) ) {
$metadata['heading_separator'] = 'none';
}
if ( ! isset( $metadata['caption_separator'] ) ) {
$metadata['caption_separator'] = 'none';
}
if ( 'center' !== $metadata['content_alignment'] ) {
$metadata['heading_separator'] = 'none';
$metadata['caption_separator'] = 'none';
}
if ( 'center' === $metadata['content_alignment'] ) {
if ( 'none' !== $metadata['heading_separator'] ) {
$heading_title_sc_wrapper_class = ' fusion-block-element';
}
if ( 'none' !== $metadata['caption_separator'] ) {
$caption_title_sc_wrapper_class = ' fusion-block-element';
}
}
?>
-
>
sanitize->css_asset_url( $metadata['preview_image'] ) : ''; ?>
sanitize->css_asset_url( FUSION_CORE_URL . '/images/video_preview.jpg' ) : FUSION_CORE_URL . '/images/video_preview.jpg'; ?>
'fusion-slider-container fusion-slider-sc-' . self::$parent_args['name'],
'style' => '',
]
);
$term_details = get_term_by( 'slug', self::$parent_args['name'], 'slide-page' );
$attr['class'] .= ' fusion-slider-' . $term_details->term_id;
$attr['data-id'] = $term_details->term_id;
$attr['data-full_height'] = isset( self::$parent_args['full_height'] ) ? self::$parent_args['full_height'] : 'no';
$attr['data-full_height'] = 'yes' === $attr['data-full_height'];
$attr['data-offset'] = isset( self::$parent_args['offset'] ) ? self::$parent_args['offset'] : '';
if ( '100%' === self::$slider_settings['slider_width'] && ! self::$slider_settings['full_screen'] ) {
$attr['class'] .= ' full-width-slider';
}
if ( '100%' !== self::$slider_settings['slider_width'] && ! self::$slider_settings['full_screen'] ) {
$attr['class'] .= ' fixed-width-slider';
}
if ( self::$parent_args['class'] ) {
$attr['class'] .= ' ' . self::$parent_args['class'];
}
$attr['style'] .= Fusion_Builder_Margin_Helper::get_margins_style( self::$parent_args );
if ( self::$parent_args['id'] ) {
$attr['id'] = self::$parent_args['id'];
}
$attr['style'] .= 'height:' . self::$slider_settings['slider_height'] . '; max-width:' . self::$slider_settings['slider_width'] . ';';
return $attr;
}
/**
* Builds the container attributes array.
*
* @access public
* @since 1.0
* @return array
*/
public function container_attr() {
$attr = [
'class' => 'tfs-slider flexslider main-flex',
];
if ( self::$slider_settings ) {
foreach ( self::$slider_settings as $slider_setting => $slider_setting_value ) {
$attr[ 'data-' . $slider_setting ] = $slider_setting_value;
}
}
if ( '100%' === self::$slider_settings['slider_width'] && ! self::$slider_settings['full_screen'] ) {
$attr['class'] .= ' full-width-slider';
}
if ( '100%' !== self::$slider_settings['slider_width'] && ! self::$slider_settings['full_screen'] ) {
$attr['class'] .= ' fixed-width-slider';
}
$attr['style'] = 'max-width:' . self::$slider_settings['slider_width'] . ';';
return $attr;
}
/**
* Gets the query data.
*
* @static
* @access public
* @since 2.0.0
* @param array $defaults An array of defaults.
* @return void
*/
public function ajax_query( $defaults ) {
check_ajax_referer( 'fusion_load_nonce', 'fusion_load_nonce' );
$this->query( $defaults );
}
/**
* Gets the query data.
*
* @static
* @access public
* @since 2.0.0
* @param array $defaults An array of defaults.
* @return void
*/
public function query( $defaults ) {
$return_data = [];
$sliders = FusionCore_Plugin::get_fusion_sliders();
check_ajax_referer( 'fusion_load_nonce', 'fusion_load_nonce' );
// phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
$offset = isset( $_POST['model']['params']['offset'] ) ? wp_unslash( $_POST['model']['params']['offset'] ) : '';
// phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
$full_height = isset( $_POST['model']['params']['full_height'] ) ? wp_unslash( $_POST['model']['params']['full_height'] ) : '';
if ( ! empty( $sliders ) ) {
foreach ( $sliders as $slider_id => $slider_name ) {
$slider_content = do_shortcode( '[fusion_fusionslider name="' . $slider_id . '" offset="' . $offset . '" full_height="' . $full_height . '" ]' );
$return_data['sliders'][ $slider_id ] = [
'content' => $slider_content,
];
}
} else {
$return_data['placeholder'] = fusion_builder_placeholder( 'avada_fusionslider', 'Avada Sliders' );
}
echo wp_json_encode( $return_data );
die();
}
}
}
new FusionSC_FusionSlider();
}
/**
* Map shortcode to Avada Builder
*
* @since 1.0
*/
function fusion_element_fusionslider() {
if ( ! class_exists( 'Fusion_Slider' ) || ! function_exists( 'fusion_builder_map' ) || ! function_exists( 'fusion_builder_frontend_data' ) ) {
return;
}
$slider_options = FusionCore_Plugin::get_fusion_sliders();
fusion_builder_map(
fusion_builder_frontend_data(
'FusionSC_FusionSlider',
[
'name' => esc_attr__( 'Avada Slider', 'fusion-core' ),
'shortcode' => 'fusion_fusionslider',
'icon' => 'fusiona-avada-logo',
'preview' => FUSION_CORE_PATH . '/shortcodes/previews/fusion-fusion-slider-preview.php',
'preview_id' => 'fusion-builder-block-module-fusion-slider-preview-template',
'front-end' => FUSION_CORE_PATH . '/shortcodes/previews/front-end/fusion-fusionslider.php',
'help_url' => 'https://avada.com/documentation/avada-slider-element/',
'params' => [
[
'type' => 'select',
'heading' => esc_attr__( 'Slider Name', 'fusion-core' ),
'description' => esc_attr__( 'Select the slider you want to use. The options will appear as the slider name next to the number of slides in brackets.', 'fusion-core' ),
'param_name' => 'name',
'value' => $slider_options,
'default' => function_exists( 'fusion_get_array_default' ) ? fusion_get_array_default( $slider_options ) : '',
],
[
'type' => 'radio_button_set',
'heading' => esc_html__( 'Full Height', 'fusion-core' ),
'description' => esc_html__( 'Makes slider full screen height.', 'fusion-core' ),
'param_name' => 'full_height',
'default' => 'no',
'value' => [
'yes' => esc_attr__( 'Yes', 'fusion-core' ),
'no' => esc_attr__( 'No', 'fusion-core' ),
],
'callback' => [
'function' => 'fusion_ajax',
'action' => 'get_fusion_fusionslider',
'ajax' => true,
],
],
[
'type' => 'textfield',
'heading' => esc_html__( 'Full Height Offset', 'fusion-core' ),
'description' => esc_html__( 'The slider offset. Accepts both pixels and CSS selectors.', 'fusion-core' ),
'param_name' => 'offset',
'default' => '',
'dependency' => [
[
'element' => 'full_height',
'value' => 'yes',
'operator' => '==',
],
],
'callback' => [
'function' => 'fusion_ajax',
'action' => 'get_fusion_fusionslider',
'ajax' => true,
],
],
'fusion_margin_placeholder' => [
'param_name' => 'margin',
'group' => esc_attr__( 'General', 'fusion-core' ),
'value' => [
'margin_top' => '',
'margin_bottom' => '',
],
],
[
'type' => 'checkbox_button_set',
'heading' => esc_attr__( 'Element Visibility', 'fusion-core' ),
'param_name' => 'hide_on_mobile',
'value' => fusion_builder_visibility_options( 'full' ),
'default' => fusion_builder_default_visibility( 'array' ),
'description' => esc_attr__( 'Choose to show or hide the element on small, medium or large screens. You can choose more than one at a time.', 'fusion-core' ),
],
[
'type' => 'textfield',
'heading' => esc_attr__( 'CSS Class', 'fusion-core' ),
'param_name' => 'class',
'value' => '',
'description' => esc_attr__( 'Add a class to the wrapping HTML element.', 'fusion-core' ),
],
[
'type' => 'textfield',
'heading' => esc_attr__( 'CSS ID', 'fusion-core' ),
'param_name' => 'id',
'value' => '',
'description' => esc_attr__( 'Add an ID to the wrapping HTML element.', 'fusion-core' ),
],
],
'callback' => [
'function' => 'fusion_ajax',
'action' => 'get_fusion_fusionslider',
'ajax' => true,
],
]
)
);
}
// Priority 20 to make sure its loaded after setup_fusion_slider.
add_action( 'fusion_builder_wp_loaded', 'fusion_element_fusionslider', 20 );