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 .= '
'; $output .= '
'; // Hier wird die neue Klasse hinzugefügt $output .= '
'; 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 .= '
'; $output .= '
'; // Platzhalte falls kein featured image da ist $output .= ''; $output .= ' '; // NEUER CODE FÜR DEN ENFOLD-STANDARD-PLATZHALTER if( empty( $current_post_data['image'] ) ) { // Hier ist der von Ihnen bereitgestellte SVG-Code $output .= ''; } else { $output .= $current_post_data['image']; } $output .= ''; $output .= '
'; $output .= '
'; $output .= '

'; $output .= ' ' . $current_post_data['title'] . ''; $output .= '

'; $output .= '
'; $output .= ' ' . $current_post_data['author'] . ''; $output .= ' |'; $output .= ' ' . $current_post_data['date'] . ''; $output .= '
'; $output .= '
'; $output .= '
'; $output .= ' ' . $current_post_data['content']; $output .= '
'; $output .= '
'; $output .= ' '; $output .= '
'; $output .= '
'; $post_loop_count++; if($post_loop_count > $columns || $loop_counter == $total_posts) { $post_loop_count = 1; $extraClass = ''; } $loop_counter++; endwhile; $output .= '
'; // Schließt den einzigen Wrapper div.slide-entry-wrap $output .= '
'; if( false !== strpos( $slider_navigation, 'av-navigate-arrows' ) ) { $output .= '
'; $output .= ' ' . __('Previous','avia_framework') . ''; $output .= ' ' . __('Next','avia_framework') . ''; $output .= '
'; } if( false !== strpos( $slider_navigation, 'av-navigate-dots' ) && 'av-control-hidden' != $control_layout ) { $output .= '
'; $output .= ' ' . '1' . ''; $counter = 2; while($counter <= $total_posts) { $output .= ' ' . $counter . ''; $counter++; } $output .= '
'; } $output .= '
'; 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; } } } } }