Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * Post Slider
- *
- * Display a slideshow or grid of Post Entries
- *
- * Todo: test with layerslider elements. currently throws error bc layerslider is only included if layerslider element is detected which is not the case with the post/page element
- *
- * This class does not support post css files
- * ==========================================
- */
- if( ! defined( 'ABSPATH' ) ) { exit; } // Exit if accessed directly
- if( ! class_exists( 'avia_sc_postslider', false ) )
- {
- class avia_sc_postslider extends aviaShortcodeTemplate
- {
- /**
- * Create the config array for the shortcode button
- */
- protected function shortcode_insert_button()
- {
- $this->config['version'] = '1.0';
- $this->config['self_closing'] = 'yes';
- $this->config['base_element'] = 'yes';
- $this->config['name'] = __( 'Post Slider', 'avia_framework' );
- $this->config['tab'] = __( 'Content Elements', 'avia_framework' );
- $this->config['icon'] = AviaBuilder::$path['imagesURL'] . 'sc-postslider.png';
- $this->config['order'] = 30;
- $this->config['target'] = 'avia-target-insert';
- $this->config['shortcode'] = 'av_postslider';
- $this->config['tooltip'] = __( 'Display a Slideshow of Post Entries', 'avia_framework' );
- $this->config['drag-level'] = 3;
- $this->config['disabling_allowed'] = true;
- $this->config['id_name'] = 'id';
- $this->config['id_show'] = 'yes';
- $this->config['alb_desc_id'] = 'alb_description';
- }
- protected function extra_assets()
- {
- $ver = Avia_Builder()->get_theme_version();
- $min_js = avia_minify_extension( 'js' );
- $min_css = avia_minify_extension( 'css' );
- //load css
- wp_enqueue_style( 'avia-module-slideshow', AviaBuilder::$path['pluginUrlRoot'] . "avia-shortcodes/slideshow/slideshow{$min_css}.css", array( 'avia-layout' ), $ver );
- wp_enqueue_style( 'avia-module-postslider', AviaBuilder::$path['pluginUrlRoot'] . "avia-shortcodes/postslider/postslider{$min_css}.css", array( 'avia-module-slideshow' ), $ver );
- //load js
- wp_enqueue_script( 'avia-module-slideshow', AviaBuilder::$path['pluginUrlRoot'] . "avia-shortcodes/slideshow/slideshow{$min_js}.js", array( 'avia-shortcodes' ), $ver, true );
- }
- /**
- * Popup Elements
- *
- * If this function is defined in a child class the element automatically gets an edit button, that, when pressed
- * opens a modal window that allows to edit the element properties
- *
- * @return void
- */
- protected function popup_elements()
- {
- $this->elements = array(
- array(
- 'type' => 'tab_container',
- 'nodescription' => true
- ),
- array(
- 'type' => 'tab',
- 'name' => __( 'Content', 'avia_framework' ),
- 'nodescription' => true
- ),
- array(
- 'type' => 'template',
- 'template_id' => 'toggle_container',
- 'templates_include' => array(
- $this->popup_key( 'content_slides' ),
- $this->popup_key( 'content_filter' ),
- $this->popup_key( 'content_excerpt' ),
- ),
- 'nodescription' => true
- ),
- array(
- 'type' => 'tab_close',
- 'nodescription' => true
- ),
- array(
- 'type' => 'tab',
- 'name' => __( 'Styling', 'avia_framework' ),
- 'nodescription' => true
- ),
- array(
- 'type' => 'template',
- 'template_id' => 'toggle_container',
- 'templates_include' => array(
- $this->popup_key( 'styling_columns' ),
- $this->popup_key( 'styling_image' ),
- $this->popup_key( 'styling_navigation' )
- ),
- 'nodescription' => true
- ),
- array(
- 'type' => 'tab_close',
- 'nodescription' => true
- ),
- array(
- 'type' => 'tab',
- 'name' => __( 'Advanced', 'avia_framework' ),
- 'nodescription' => true
- ),
- array(
- 'type' => 'toggle_container',
- 'nodescription' => true
- ),
- array(
- 'type' => 'template',
- 'template_id' => $this->popup_key( 'advanced_animation_slider' ),
- 'nodescription' => true
- ),
- array(
- 'type' => 'template',
- 'template_id' => 'lazy_loading_toggle',
- 'lockable' => true
- ),
- array(
- 'type' => 'template',
- 'template_id' => 'screen_options_toggle',
- 'lockable' => true
- ),
- array(
- 'type' => 'template',
- 'template_id' => 'developer_options_toggle',
- 'args' => array( 'sc' => $this )
- ),
- array(
- 'type' => 'toggle_container_close',
- 'nodescription' => true
- ),
- array(
- 'type' => 'tab_close',
- 'nodescription' => true
- ),
- array(
- 'type' => 'template',
- 'template_id' => 'element_template_selection_tab',
- 'args' => array( 'sc' => $this )
- ),
- array(
- 'type' => 'tab_container_close',
- 'nodescription' => true
- )
- );
- }
- /**
- * Create and register templates for easier maintainance
- *
- * @since 4.6.4
- */
- protected function register_dynamic_templates()
- {
- /**
- * Content Tab
- * ===========
- */
- $c = array(
- array(
- 'name' => __( 'Which Entries Should Be Used', 'avia_framework' ),
- 'desc' => __( 'Select which entries should be displayed by selecting a taxonomy', 'avia_framework' ),
- 'id' => 'link',
- 'type' => 'linkpicker',
- 'fetchTMPL' => true,
- 'multiple' => 6,
- 'std' => 'category',
- 'lockable' => true,
- 'subtype' => array( __( 'Display Entries from:', 'avia_framework' ) => 'taxonomy' )
- ),
- array(
- 'name' => __( 'Multiple Categories/Terms Relation', 'avia_framework' ),
- 'desc' => __( 'Select to use an OR or AND relation. In AND an entry must be in all selected categories/terms to be displayed. Defaults to OR', 'avia_framework' ),
- 'id' => 'term_rel',
- 'type' => 'select',
- 'std' => '',
- 'lockable' => true,
- 'subtype' => array(
- __( 'OR', 'avia_framework' ) => '',
- __( 'AND', 'avia_framework' ) => 'AND'
- )
- )
- );
- if( current_theme_supports( 'add_avia_builder_post_type_option' ) )
- {
- $element = array(
- 'type' => 'template',
- 'template_id' => 'avia_builder_post_type_option',
- 'lockable' => true,
- );
- array_unshift( $c, $element );
- }
- $template = array(
- array(
- 'type' => 'template',
- 'template_id' => 'toggle',
- 'title' => __( 'Entries', 'avia_framework' ),
- 'content' => $c
- ),
- );
- AviaPopupTemplates()->register_dynamic_template( $this->popup_key( 'content_slides' ), $template );
- $c = array(
- array(
- 'type' => 'template',
- 'template_id' => 'wc_options_non_products',
- 'lockable' => true
- ),
- array(
- 'type' => 'template',
- 'template_id' => 'date_query',
- 'lockable' => true,
- 'period' => true
- ),
- array(
- 'name' => __( 'Entry Number', 'avia_framework' ),
- 'desc' => __( 'How many items should be displayed?', 'avia_framework' ),
- 'id' => 'items',
- 'type' => 'select',
- 'std' => '9',
- 'lockable' => true,
- 'subtype' => AviaHtmlHelper::number_array( 1, 100, 1, array( 'All' => '-1' ) )
- ),
- array(
- 'name' => __( 'Offset Number', 'avia_framework' ),
- 'desc' => __( 'The offset determines where the query begins pulling posts. Useful if you want to remove a certain number of posts because you already query them with another post slider element.', 'avia_framework' ),
- 'id' => 'offset',
- 'type' => 'select',
- 'std' => '0',
- 'lockable' => true,
- 'subtype' => AviaHtmlHelper::number_array( 1, 100, 1, array( __( 'Deactivate offset', 'avia_framework') => '0', __( 'Do not allow duplicate posts on the entire page (set offset automatically)', 'avia_framework' ) => 'no_duplicates' ) )
- ),
- array(
- 'type' => 'template',
- 'template_id' => 'page_element_filter',
- 'lockable' => true
- )
- );
- $template = array(
- array(
- 'type' => 'template',
- 'template_id' => 'toggle',
- 'title' => __( 'Filters', 'avia_framework' ),
- 'content' => $c
- ),
- );
- AviaPopupTemplates()->register_dynamic_template( $this->popup_key( 'content_filter' ), $template );
- $c = array(
- array(
- 'name' => __( 'Slide Content', 'avia_framework' ),
- 'desc' => __( 'Select what information you want to display', 'avia_framework' ),
- 'id' => 'contents',
- 'type' => 'select',
- 'std' => 'excerpt',
- 'lockable' => true,
- 'subtype' => array(
- __( 'Title and Excerpt', 'avia_framework' ) => 'excerpt',
- __( 'Title, Excerpt and Read More Link', 'avia_framework' ) => 'excerpt_read_more',
- __( 'Only Title', 'avia_framework' ) => 'title',
- __( 'Title and Read More Link', 'avia_framework' ) => 'title_read_more',
- __( 'Only Excerpt', 'avia_framework' ) => 'only_excerpt',
- __( 'Excerpt and Read More Link', 'avia_framework' ) => 'only_excerpt_read_more',
- __( 'No Title, no Excerpt', 'avia_framework' ) => 'no'
- )
- ),
- );
- $template = array(
- array(
- 'type' => 'template',
- 'template_id' => 'toggle',
- 'title' => __( 'Content', 'avia_framework' ),
- 'content' => $c
- ),
- );
- AviaPopupTemplates()->register_dynamic_template( $this->popup_key( 'content_excerpt' ), $template );
- /**
- * Styling Tab
- * ===========
- */
- $c = array(
- array(
- 'name' => __( 'Columns', 'avia_framework' ),
- 'desc' => __( 'How many columns should be displayed?', 'avia_framework' ),
- 'id' => 'columns',
- 'type' => 'select',
- 'std' => '3',
- 'lockable' => true,
- 'subtype' => array(
- __( '1 Columns', 'avia_framework' ) => '1',
- __( '2 Columns', 'avia_framework' ) => '2',
- __( '3 Columns', 'avia_framework' ) => '3',
- __( '4 Columns', 'avia_framework' ) => '4',
- __( '5 Columns', 'avia_framework' ) => '5',
- )
- )
- );
- $template = array(
- array(
- 'type' => 'template',
- 'template_id' => 'toggle',
- 'title' => __( 'Columns', 'avia_framework' ),
- 'content' => $c
- ),
- );
- AviaPopupTemplates()->register_dynamic_template( $this->popup_key( 'styling_columns' ), $template );
- $c = array(
- array(
- 'name' => __( 'Preview Image Size', 'avia_framework' ),
- 'desc' => __( 'Set the image size of the preview images', 'avia_framework' ),
- 'id' => 'preview_mode',
- 'type' => 'select',
- 'std' => 'auto',
- 'lockable' => true,
- 'subtype' => array(
- __( 'Set the preview image size automatically based on column width', 'avia_framework' ) => 'auto',
- __( 'Choose the preview image size manually (select thumbnail size)', 'avia_framework' ) => 'custom'
- )
- ),
- array(
- 'name' => __( 'Select custom preview image size', 'avia_framework' ),
- 'desc' => __( 'Choose image size for Preview Image', 'avia_framework' ),
- 'id' => 'image_size',
- 'type' => 'select',
- 'std' => 'portfolio',
- 'lockable' => true,
- 'required' => array( 'preview_mode', 'equals', 'custom' ),
- 'subtype' => AviaHelper::get_registered_image_sizes( array( 'logo' ) )
- )
- );
- $template = array(
- array(
- 'type' => 'template',
- 'template_id' => 'toggle',
- 'title' => __( 'Preview Image', 'avia_framework' ),
- 'content' => $c
- ),
- );
- AviaPopupTemplates()->register_dynamic_template( $this->popup_key( 'styling_image' ), $template );
- $c = array(
- array(
- 'type' => 'template',
- 'template_id' => 'slideshow_controls',
- 'std_nav' => 'av-navigate-arrows',
- 'lockable' => true
- )
- );
- $template = array(
- array(
- 'type' => 'template',
- 'template_id' => 'toggle',
- 'title' => __( 'Navigation Controls', 'avia_framework' ),
- 'content' => $c
- ),
- );
- AviaPopupTemplates()->register_dynamic_template( $this->popup_key( 'styling_navigation' ), $template );
- /**
- * Advanced Tab
- * ===========
- */
- $c = array(
- /*
- array(
- 'name' => __( 'Post Slider Transition', 'avia_framework' ),
- 'desc' => __( 'Choose the transition for your Post Slider.', 'avia_framework' ),
- 'id' => 'animation',
- 'type' => 'select',
- 'std' => 'fade',
- 'subtype' => array(
- __( 'Slide', 'avia_framework' ) => 'slide',
- __( 'Fade', 'avia_framework' ) => 'fade'
- ),
- ),
- */
- array(
- 'type' => 'template',
- 'template_id' => 'slideshow_rotation',
- 'select_vals' => 'yes,no',
- 'stop_id' => 'autoplay_stopper',
- 'lockable' => true
- )
- );
- $template = array(
- array(
- 'type' => 'template',
- 'template_id' => 'toggle',
- 'title' => __( 'Slider Animation', 'avia_framework' ),
- 'content' => $c
- ),
- );
- AviaPopupTemplates()->register_dynamic_template( $this->popup_key( 'advanced_animation_slider' ), $template );
- }
- /**
- * Editor Element - this function defines the visual appearance of an element on the AviaBuilder Canvas
- * Most common usage is to define some markup in the $params['innerHtml'] which is then inserted into the drag and drop container
- * Less often used: $params['data'] to add data attributes, $params['class'] to modify the className
- *
- * @param array $params holds the default values for $content and $args.
- * @return array usually holds an innerHtml key that holds item specific markup.
- */
- public function editor_element( $params )
- {
- $params = parent::editor_element( $params );
- $params['content'] = null; //remove to allow content elements
- return $params;
- }
- /**
- * Frontend Shortcode Handler
- *
- * @param array $atts array of attributes
- * @param string $content text within enclosing form of shortcode element
- * @param string $shortcodename the shortcode found, when == callback name
- * @return string $output returns the modified html string
- */
- public function shortcode_handler( $atts, $content = '', $shortcodename = '', $meta = '' )
- {
- $default = avia_post_slider::get_defaults();
- $locked = array();
- Avia_Element_Templates()->set_locked_attributes( $atts, $this, $shortcodename, $default, $locked, $content );
- Avia_Element_Templates()->add_template_class( $meta, $atts, $default );
- $screen_sizes = AviaHelper::av_mobile_sizes( $atts );
- if( isset( $atts['img_scrset'] ) && 'disabled' == $atts['img_scrset'] )
- {
- Av_Responsive_Images()->force_disable( 'disabled' );
- }
- if( isset( $atts['link'] ) )
- {
- $atts['link'] = explode(',', $atts['link'], 2 );
- $atts['taxonomy'] = $atts['link'][0];
- if( isset( $atts['link'][1] ) )
- {
- $atts['categories'] = $atts['link'][1];
- }
- }
- $atts['class'] = $meta['el_class'];
- $atts['el_id'] = $meta['custom_el_id'];
- $atts = array_merge( $atts, $screen_sizes );
- /**
- * @since 4.5.5
- * @return array
- */
- $atts = apply_filters( 'avf_post_slider_args', $atts, $this->config['shortcode'], $this );
- $slider = new avia_post_slider( $atts );
- $slider->query_entries();
- $html = $slider->html();
- Av_Responsive_Images()->force_disable( 'reset' );
- return $html;
- }
- }
- }
- if ( ! class_exists( 'avia_post_slider', false ) )
- {
- /**
- * This class does not support post css files
- * ==========================================
- */
- class avia_post_slider
- {
- /**
- * @since < 4.0
- * @var int
- */
- static public $slide = 0;
- /**
- *
- * @since < 4.0
- * @var array
- */
- protected $atts;
- /**
- *
- * @since < 4.0
- * @var WP_Query
- */
- protected $entries;
- /**
- *
- * @since 4.7.6.4
- * @var int
- */
- protected $current_page;
- /**
- * @since < 4.0
- * @since 5.6 added to pass a WP_Query object
- * @param array $atts
- */
- public function __construct( $atts = array() )
- {
- $this->entries = null;
- $this->current_page = 1;
- if( isset( $atts['wp_query'] ) && $atts['wp_query'] instanceof WP_Query )
- {
- $this->entries = $atts['wp_query'];
- $this->set_posts_on_current_page();
- }
- $this->atts = shortcode_atts( avia_post_slider::get_defaults(), $atts, 'av_postslider' );
- if( ! in_array( $this->atts['slider_navigation'], array( 'av-navigate-arrows', 'av-navigate-dots', 'av-navigate-arrows av-navigate-dots' ) ) )
- {
- $this->atts['slider_navigation'] = 'av-navigate-arrows';
- }
- if( $this->atts['term_rel'] != 'AND' )
- {
- $this->atts['term_rel'] = 'IN';
- }
- }
- /**
- * @since 4.5.5
- */
- public function __destruct()
- {
- unset( $this->atts );
- unset( $this->entries );
- }
- /**
- * Returns the defaults array
- *
- * @since 4.8
- * @return array
- */
- static public function get_defaults()
- {
- $defaults = array(
- 'type' => 'slider', // can also be used as grid
- 'style' => '', //no_margin
- 'columns' => '4',
- 'items' => '16',
- 'taxonomy' => 'category',
- 'term_rel' => 'IN',
- 'control_layout' => 'av-control-default',
- 'slider_navigation' => 'av-navigate-arrows',
- 'nav_visibility_desktop' => '',
- 'wc_prod_visible' => '',
- 'wc_prod_hidden' => '',
- 'wc_prod_featured' => '',
- 'wc_prod_sale' => '',
- 'prod_order_by' => '',
- 'prod_order' => '',
- 'show_meta_data' => '', // '' | 'always' | 'on_empty_title' | 'on_empty_content' (use filter to change)
- 'post_type' => get_post_types(),
- 'contents' => 'excerpt',
- 'preview_mode' => 'auto',
- 'image_size' => 'portfolio',
- 'animation' => 'fade',
- 'transition_speed' => '',
- 'autoplay' => 'no',
- 'interval' => 5,
- 'autoplay_stopper' => '',
- 'manual_stopper' => '',
- 'paginate' => 'no',
- 'use_main_query_pagination' => 'no',
- 'class' => '',
- 'el_id' => '',
- 'categories' => array(),
- 'custom_query' => array(),
- 'offset' => 0,
- 'custom_markup' => '',
- 'av_display_classes' => '',
- 'date_filter' => '',
- 'date_filter_start' => '',
- 'date_filter_end' => '',
- 'date_filter_format' => 'yy/mm/dd', // 'yy/mm/dd' | 'dd-mm-yy' | yyyymmdd
- 'period_filter_unit_1' => '',
- 'period_filter_unit_2' => '',
- 'page_element_filter' => '',
- 'lazy_loading' => 'disabled',
- 'img_scrset' => ''
- );
- return $defaults;
- }
- /**
- * @since 5.4
- * @return array
- */
- public function get_atts()
- {
- return $this->atts;
- }
- /**
- *
- * @since < 4.0
- * @return string
- */
- // Umgestaltung der Ausgabe (Auszug, innerhalb der Klasse avia_post_slider)
- public function html()
- {
- $output = '';
- if( empty( $this->entries ) || ! $this->entries instanceof WP_Query || empty( $this->entries->posts ) )
- {
- return $output;
- }
- avia_post_slider::$slide ++;
- extract( $this->atts );
- if( $preview_mode == 'auto' )
- {
- $image_size = 'portfolio';
- }
- $extraClass = 'first';
- $grid = 'one_third';
- $post_loop_count = 1;
- $loop_counter = 1;
- $autoplay = $autoplay == 'no' ? false : true;
- $total = $columns % 2 ? 'odd' : 'even';
- $blogstyle = function_exists( 'avia_get_option' ) ? avia_get_option( 'blog_global_style', '' ) : '';
- $excerpt_length = 60;
- $total_posts = $this->entries->post_count;
- $output_class = 'avia-content-slider-wrap avia-content-slider-active ' . $style . ' ' . $class;
- $data = 'data-autoplay="' . $autoplay . '" data-interval="' . $interval . '" data-animation="' . $animation . '" ';
- $data .= 'data-manual_stopper="' . $manual_stopper . '" data-loop_once="' . $autoplay_stopper . '" ';
- $total_thumb_count = 0;
- if( ! in_array( $columns, array( 1, 2, 3, 4, 5 ) ) )
- {
- $columns = 3;
- }
- switch( $columns )
- {
- case '1':
- $grid = 'no_margin';
- break;
- case '2':
- $grid = 'one_half';
- break;
- case '3':
- $grid = 'one_third';
- break;
- case '4':
- $grid = 'one_fourth';
- break;
- case '5':
- $grid = 'one_fifth';
- break;
- }
- $this->set_posts_on_current_page();
- $output .= '<div ' . $data . ' class="' . $output_class . '">';
- $output .= '<div class="avia-content-slider-inner">';
- // Hier wird die neue Klasse hinzugefügt
- $output .= '<div class="slide-entry-wrap av-postslider-columns-' . $columns . '">';
- while ( $this->entries->have_posts() ) : $this->entries->the_post();
- $current_post_data = array();
- $current_post_data['format'] = get_post_format();
- if( empty( $current_post_data['format'] ) )
- {
- $current_post_data['format'] = 'standard';
- }
- $current_post_data['permalink'] = get_permalink();
- $current_post_data['title'] = get_the_title();
- $current_post_data['content'] = get_the_excerpt();
- $current_post_data['author'] = get_the_author();
- $current_post_data['date'] = get_the_time(get_option('date_format'));
- $current_post_data['image'] = get_the_post_thumbnail(get_the_ID(), $image_size);
- $output .= '<article class="slide-entry flex_column ' . $grid . ' ' . $current_post_data['format'] . '">';
- $output .= '<div class="slide-entry-inner">';
- // Platzhalte falls kein featured image da ist
- $output .= '<a href="' . $current_post_data['permalink'] . '" data-rel="slide-'. avia_post_slider::$slide .'" class="slide-image">';
- $output .= ' <span class="slide-overlay"></span>';
- // NEUER CODE FÜR DEN ENFOLD-STANDARD-PLATZHALTER
- if( empty( $current_post_data['image'] ) )
- {
- // Hier ist der von Ihnen bereitgestellte SVG-Code
- $output .= '<span class="fallback-post-type-icon avia-svg-icon avia-font-svg_entypo-fontello" data-av_svg_icon="link" data-av_iconset="svg_entypo-fontello"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="26" height="32" viewBox="0 0 26 32" preserveAspectRatio="xMidYMid meet" role="graphics-symbol" aria-hidden="true"><path d="M9.408 23.488q0.448-0.448 1.088-0.448t1.152 0.448q1.024 1.088 0 2.24l-1.344 1.28q-1.792 1.792-4.224 1.792-2.496 0-4.288-1.792t-1.792-4.224q0-2.496 1.792-4.288l4.736-4.736q2.24-2.176 4.608-2.464t4.096 1.376q0.512 0.512 0.512 1.152t-0.512 1.152q-1.152 1.024-2.24 0-1.6-1.536-4.224 1.088l-4.736 4.672q-0.832 0.832-0.832 2.048t0.832 1.984q0.832 0.832 2.016 0.832t2.016-0.832zM23.808 5.12q1.792 1.792 1.792 4.224 0 2.496-1.792 4.288l-5.056 5.056q-2.368 2.304-4.8 2.304-1.984 0-3.584-1.6-0.448-0.448-0.448-1.088t0.448-1.152q0.448-0.448 1.12-0.448t1.12 0.448q1.6 1.536 3.904-0.768l5.056-4.992q0.896-0.896 0.896-2.048 0-1.216-0.896-1.984-0.768-0.832-1.792-0.992t-1.92 0.672l-1.6 1.6q-0.512 0.448-1.152 0.448t-1.088-0.448q-1.088-1.088 0-2.24l1.6-1.6q1.728-1.728 4.064-1.632t4.128 1.952z"></path></svg></span>';
- } else {
- $output .= $current_post_data['image'];
- }
- $output .= '</a>';
- $output .= ' <div class="slide-content">';
- $output .= ' <header class="entry-content-header">';
- $output .= ' <h3 class="slide-content-title">';
- $output .= ' <a href="' . $current_post_data['permalink'] . '" title="' . $current_post_data['title'] . '">' . $current_post_data['title'] . '</a>';
- $output .= ' </h3>';
- $output .= ' <div class="slide-meta">';
- $output .= ' <span class="blog-author minor-meta">' . $current_post_data['author'] . '</span>';
- $output .= ' <span class="text-sep">|</span>';
- $output .= ' <span class="blog-date minor-meta">' . $current_post_data['date'] . '</span>';
- $output .= ' </div>';
- $output .= ' </header>';
- $output .= ' <div class="entry-content">';
- $output .= ' ' . $current_post_data['content'];
- $output .= ' </div>';
- $output .= ' </div>';
- $output .= ' <footer class="entry-footer">';
- $output .= ' <a class="more-link" href="' . $current_post_data['permalink'] . '">' . __('Read more','avia_framework') . '<span class="avia_continue_reading_arrow"></span></a>';
- $output .= ' </footer>';
- $output .= '</div>';
- $output .= '</article>';
- $post_loop_count++;
- if($post_loop_count > $columns || $loop_counter == $total_posts)
- {
- $post_loop_count = 1;
- $extraClass = '';
- }
- $loop_counter++;
- endwhile;
- $output .= '</div>'; // Schließt den einzigen Wrapper div.slide-entry-wrap
- $output .= '</div>';
- if( false !== strpos( $slider_navigation, 'av-navigate-arrows' ) )
- {
- $output .= '<div class="avia-slideshow-arrows avia-slideshow-controls">';
- $output .= ' <a href="#prev" class="prev-slide">' . __('Previous','avia_framework') . '</a>';
- $output .= ' <a href="#next" class="next-slide">' . __('Next','avia_framework') . '</a>';
- $output .= '</div>';
- }
- if( false !== strpos( $slider_navigation, 'av-navigate-dots' ) && 'av-control-hidden' != $control_layout )
- {
- $output .= '<div class="avia-slideshow-dots avia-slideshow-controls">';
- $output .= ' <a data-avia-slide-to="1" href="#1" class="active-slide">' . '1' . '</a>';
- $counter = 2;
- while($counter <= $total_posts)
- {
- $output .= ' <a data-avia-slide-to="' . $counter . '" href="#' . $counter . '">' . $counter . '</a>';
- $counter++;
- }
- $output .= '</div>';
- }
- $output .= '</div>';
- wp_reset_query();
- return $output;
- }
- // public funciton html ende
- /**
- * Create arrows to scroll slides
- *
- * @since 4.8.3 reroute to aviaFrontTemplates
- * @return string
- */
- protected function slide_navigation_arrows()
- {
- $args = array(
- 'context' => get_class( $this ),
- 'params' => $this->atts,
- 'svg_icon' => true
- );
- return aviaFrontTemplates::slide_navigation_arrows( $args );
- }
- /**
- * Create dots to scroll tabs
- *
- * @since 5.0 reroute to aviaFrontTemplates
- * @return string
- */
- protected function slide_navigation_dots()
- {
- $args = array(
- 'class_main' => 'avia-slideshow-dots avia-slideshow-controls avia-post-slider fade-in',
- 'total_entries' => $this->entries->post_count,
- 'container_entries' => $this->atts['columns'],
- 'context' => get_class( $this ),
- 'params' => $this->atts
- );
- return aviaFrontTemplates::slide_navigation_dots( $args );
- }
- /**
- * Fetch new entries
- *
- * @since < 4.0
- * @param array $params
- */
- public function query_entries( $params = array() )
- {
- global $avia_config;
- if( empty( $params ) )
- {
- $params = $this->atts;
- }
- if( empty( $params['custom_query'] ) )
- {
- $query = array();
- $terms = array();
- if( ! empty( $params['categories'] ) )
- {
- //get the portfolio categories
- $terms = explode( ',', $params['categories'] );
- }
- if( $params['use_main_query_pagination'] == 'yes' )
- {
- $this->current_page = ( $params['paginate'] != 'no' ) ? avia_get_current_pagination_number() : 1;
- }
- else
- {
- $this->current_page = ( $params['paginate'] != 'no' ) ? avia_get_current_pagination_number( 'avia-element-paging' ) : 1;
- }
- //if we find no terms for the taxonomy fetch all taxonomy terms
- if( empty( $terms[0] ) || is_null( $terms[0] ) || $terms[0] === 'null' )
- {
- $term_args = array(
- 'taxonomy' => $params['taxonomy'],
- 'hide_empty' => true
- );
- /**
- * To display private posts you need to set 'hide_empty' to false,
- * otherwise a category with ONLY private posts will not be returned !!
- *
- * You also need to add post_status 'private' to the query params with filter avia_post_slide_query.
- *
- * @since 4.4.2
- * @added_by Günter
- * @param array $term_args
- * @param array $params
- * @return array
- */
- $term_args = apply_filters( 'avf_av_postslider_term_args', $term_args, $params );
- $allTax = AviaHelper::get_terms( $term_args );
- $terms = array();
- foreach( $allTax as $tax )
- {
- $terms[] = $tax->term_id;
- }
- }
- if( $params['offset'] == 'no_duplicates' )
- {
- $params['offset'] = false;
- $no_duplicates = true;
- }
- //wordpress 4.4 offset fix
- if( $params['offset'] == 0 )
- {
- $params['offset'] = false;
- }
- else
- {
- //if the offset is set the paged param is ignored. therefore we need to factor in the page number
- $params['offset'] = $params['offset'] + ( ( $this->current_page - 1 ) * $params['items'] );
- }
- if( empty( $params['post_type'] ) )
- {
- $params['post_type'] = get_post_types();
- }
- if( is_string($params['post_type'] ) )
- {
- $params['post_type'] = explode( ',', $params['post_type'] );
- }
- $orderby = 'date';
- $order = 'DESC';
- $date_query = AviaHelper::date_query( array(), $params );
- // Meta query - replaced by Tax query in WC 3.0.0
- $meta_query = array();
- $tax_query = array();
- // check if taxonomy are set to product or product attributes
- $tax = get_taxonomy( $params['taxonomy'] );
- if( class_exists( 'WooCommerce', false ) && is_object( $tax ) && isset( $tax->object_type ) && in_array( 'product', (array) $tax->object_type ) )
- {
- $avia_config['woocommerce']['disable_sorting_options'] = true;
- avia_wc_set_out_of_stock_query_params( $meta_query, $tax_query, $params['wc_prod_visible'] );
- avia_wc_set_hidden_prod_query_params( $meta_query, $tax_query, $params['wc_prod_hidden'] );
- avia_wc_set_featured_prod_query_params( $meta_query, $tax_query, $params['wc_prod_featured'] );
- avia_wc_set_on_sale_prod_query_params( $meta_query, $tax_query, $params['wc_prod_sale'] );
- // sets filter hooks !!
- $ordering_args = avia_wc_get_product_query_order_args( $params['prod_order_by'], $params['prod_order'] );
- $orderby = $ordering_args['orderby'];
- $order = $ordering_args['order'];
- $params['meta_key'] = $ordering_args['meta_key'];
- }
- if( ! empty( $terms ) )
- {
- $tax_query[] = array(
- 'taxonomy' => $params['taxonomy'],
- 'field' => 'id',
- 'terms' => $terms,
- 'operator' => count( $terms ) == 1 ? 'IN' : $params['term_rel']
- );
- }
- $query = array(
- 'orderby' => $orderby,
- 'order' => $order,
- 'paged' => $this->current_page,
- 'post_type' => $params['post_type'],
- // 'post_status' => 'publish',
- 'offset' => $params['offset'],
- 'posts_per_page' => $params['items'],
- 'post__not_in' => ( ! empty( $no_duplicates ) ) ? $avia_config['posts_on_current_page'] : array(),
- 'meta_query' => $meta_query,
- 'tax_query' => $tax_query,
- 'date_query' => $date_query
- );
- }
- else
- {
- $query = $params['custom_query'];
- }
- if( ! empty( $params['meta_key'] ) )
- {
- $query['meta_key'] = $params['meta_key'];
- }
- if( 'skip_current' == $params['page_element_filter'] )
- {
- $query['post__not_in'] = isset( $query['post__not_in'] ) ? $query['post__not_in'] : [];
- $query['post__not_in'][] = get_the_ID();
- }
- /**
- * @used_by config-bbpress\config.php avia_remove_bbpress_post_type_from_query() 10
- * @used_by config-wpml\config.php avia_translate_ids_from_query 10
- * @used_by avia_WPML::handler_avia_post_slide_query 20
- *
- * @since < 4.0
- * @param array $query
- * @param array $params
- * @return array
- */
- $query = apply_filters( 'avia_post_slide_query', $query, $params );
- @$this->entries = new WP_Query( $query ); //@ is used to prevent errors caused by wpml
- $this->set_posts_on_current_page();
- if( function_exists( 'WC' ) )
- {
- avia_wc_clear_catalog_ordering_args_filters();
- $avia_config['woocommerce']['disable_sorting_options'] = false;
- }
- }
- /**
- * Store the queried post ids in $avia_config
- *
- * @since 5.6
- */
- protected function set_posts_on_current_page()
- {
- global $avia_config;
- if( ! $this->entries instanceof WP_Query )
- {
- return;
- }
- if( $this->entries->post_count > 0 )
- {
- foreach( $this->entries->posts as $entry )
- {
- $avia_config['posts_on_current_page'][] = $entry->ID;
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment