type' => Controls_Manager::SELECT, 'options' => [ 'none' => esc_html__( 'None', 'wpr-addons' ), 'solid' => esc_html__( 'Solid', 'wpr-addons' ), 'double' => esc_html__( 'Double', 'wpr-addons' ), 'dotted' => esc_html__( 'Dotted', 'wpr-addons' ), 'dashed' => esc_html__( 'Dashed', 'wpr-addons' ), 'groove' => esc_html__( 'Groove', 'wpr-addons' ), ], 'default' => 'none', 'selectors' => [ '{{WRAPPER}} .wpr-grid-slider-arrow' => 'border-style: {{VALUE}};', ], ] ); $this->add_control( 'grid_slider_nav_border_width', [ 'label' => esc_html__( 'Border Width', 'wpr-addons' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px' ], 'default' => [ 'top' => 2, 'right' => 2, 'bottom' => 2, 'left' => 2, ], 'selectors' => [ '{{WRAPPER}} .wpr-grid-slider-arrow' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'condition' => [ 'grid_slider_nav_border_type!' => 'none', ], ] ); $this->add_control( 'grid_slider_nav_border_radius', [ 'label' => esc_html__( 'Border Radius', 'wpr-addons' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', '%' ], 'selectors' => [ '{{WRAPPER}} .wpr-grid-slider-arrow' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'separator' => 'after', ] ); $this->add_control_stack_grid_slider_nav_position(); $this->end_controls_section(); // End Controls Section // Styles ==================== // Section: Pagination ------- $this->start_controls_section( 'wpr__section_style_grid_slider_dots', [ 'label' => esc_html__( 'Slider Pagination', 'wpr-addons' ), 'tab' => Controls_Manager::TAB_STYLE, 'condition' => [ 'layout_select' => 'slider', ], ] ); $this->start_controls_tabs( 'tabs_grid_slider_dots' ); $this->start_controls_tab( 'tab_grid_slider_dots_normal', [ 'label' => esc_html__( 'Normal', 'wpr-addons' ), ] ); $this->add_control( 'grid_slider_dots_bg_color', [ 'label' => esc_html__( 'Background Color', 'wpr-addons' ), 'type' => Controls_Manager::COLOR, 'default' => 'rgba(0,0,0,0.35)', 'selectors' => [ '{{WRAPPER}} .wpr-grid-slider-dot' => 'background-color: {{VALUE}};', ], ] ); $this->add_control( 'grid_slider_dots_border_color', [ 'label' => esc_html__( 'Border Color', 'wpr-addons' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .wpr-grid-slider-dot' => 'border-color: {{VALUE}}', ], ] ); $this->end_controls_tab(); $this->start_controls_tab( 'tab_grid_slider_dots_active', [ 'label' => esc_html__( 'Active', 'wpr-addons' ), ] ); $this->add_control( 'grid_slider_dots_active_bg_color', [ 'label' => esc_html__( 'Background Color', 'wpr-addons' ), 'type' => Controls_Manager::COLOR, 'default' => '#605BE5', 'selectors' => [ '{{WRAPPER}} .wpr-grid-slider-dots .slick-active .wpr-grid-slider-dot' => 'background-color: {{VALUE}}', ], ] ); $this->add_control( 'grid_slider_dots_active_border_color', [ 'label' => esc_html__( 'Border Color', 'wpr-addons' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .wpr-grid-slider-dots .slick-active .wpr-grid-slider-dot' => 'border-color: {{VALUE}}', ], ] ); $this->end_controls_tab(); $this->end_controls_tabs(); $this->add_responsive_control( 'grid_slider_dots_width', [ 'label' => esc_html__( 'Box Width', 'wpr-addons' ), 'type' => Controls_Manager::SLIDER, 'size_units' => ['px',], 'range' => [ 'px' => [ 'min' => 1, 'max' => 100, ], ], 'default' => [ 'unit' => 'px', 'size' => 8, ], 'selectors' => [ '{{WRAPPER}} .wpr-grid-slider-dot' => 'width: {{SIZE}}{{UNIT}};', ], 'separator' => 'before', 'render_type' => 'template' ] ); $this->add_responsive_control( 'grid_slider_dots_height', [ 'label' => esc_html__( 'Box Height', 'wpr-addons' ), 'type' => Controls_Manager::SLIDER, 'size_units' => ['px',], 'range' => [ 'px' => [ 'min' => 1, 'max' => 100, ], ], 'default' => [ 'unit' => 'px', 'size' => 8, ], 'selectors' => [ '{{WRAPPER}} .wpr-grid-slider-dot' => 'height: {{SIZE}}{{UNIT}};', ], 'render_type' => 'template' ] ); $this->add_control( 'grid_slider_dots_border_type', [ 'label' => esc_html__( 'Border Type', 'wpr-addons' ), 'type' => Controls_Manager::SELECT, 'options' => [ 'none' => esc_html__( 'None', 'wpr-addons' ), 'solid' => esc_html__( 'Solid', 'wpr-addons' ), 'double' => esc_html__( 'Double', 'wpr-addons' ), 'dotted' => esc_html__( 'Dotted', 'wpr-addons' ), 'dashed' => esc_html__( 'Dashed', 'wpr-addons' ), 'groove' => esc_html__( 'Groove', 'wpr-addons' ), ], 'default' => 'none', 'selectors' => [ '{{WRAPPER}} .wpr-grid-slider-dot' => 'border-style: {{VALUE}};', ], 'render_type' => 'template', 'separator' => 'before', ] ); $this->add_control( 'grid_slider_dots_border_width', [ 'label' => esc_html__( 'Border Width', 'wpr-addons' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px' ], 'default' => [ 'top' => 1, 'right' => 1, 'bottom' => 1, 'left' => 1, ], 'selectors' => [ '{{WRAPPER}} .wpr-grid-slider-dot' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'render_type' => 'template', 'condition' => [ 'grid_slider_dots_border_type!' => 'none', ], ] ); $this->add_control( 'grid_slider_dots_border_radius', [ 'label' => esc_html__( 'Border Radius', 'wpr-addons' ), 'type' => Controls_Manager::DIMENSIONS, 'default' => [ 'top' => 50, 'right' => 50, 'bottom' => 50, 'left' => 50, 'unit' => '%', ], 'size_units' => [ 'px', '%' ], 'selectors' => [ '{{WRAPPER}} .wpr-grid-slider-dot' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'separator' => 'before', ] ); $this->add_responsive_control( 'grid_slider_dots_gutter', [ 'type' => Controls_Manager::SLIDER, 'label' => esc_html__( 'Gutter', 'wpr-addons' ), 'size_units' => ['px' ], 'range' => [ 'px' => [ 'min' => 0, 'max' => 100, ], ], 'default' => [ 'unit' => 'px', 'size' => 7, ], 'selectors' => [ '{{WRAPPER}}.wpr-grid-slider-dots-horizontal .wpr-grid-slider-dot' => 'margin-right: {{SIZE}}{{UNIT}};', '{{WRAPPER}}.wpr-grid-slider-dots-vertical .wpr-grid-slider-dot' => 'margin-bottom: {{SIZE}}{{UNIT}};', ], 'render_type' => 'template', 'separator' => 'before', ] ); $this->add_control_grid_slider_dots_hr(); $this->add_responsive_control( 'grid_slider_dots_vr', [ 'type' => Controls_Manager::SLIDER, 'label' => esc_html__( 'Vertical Position', 'wpr-addons' ), 'size_units' => [ '%', 'px' ], 'range' => [ '%' => [ 'min' => -20, 'max' => 120, ], 'px' => [ 'min' => -200, 'max' => 2000, ], ], 'default' => [ 'unit' => '%', 'size' => 96, ], 'selectors' => [ '{{WRAPPER}} .wpr-grid-slider-dots' => 'top: {{SIZE}}{{UNIT}};', ], ] ); $this->end_controls_section(); // End Controls Section } // Render Post Taxonomies public function render_post_taxonomies( $settings, $class, $post_id ) { $terms = wp_get_post_terms( $post_id, $settings['element_select'] ); $count = 0; $tax1_pointer = !defined('WPR_ADDONS_PRO_VERSION') || !wpr_fs()->can_use_premium_code() ? 'none' : $this->get_settings()['tax1_pointer']; $tax1_pointer_animation = !defined('WPR_ADDONS_PRO_VERSION') || !wpr_fs()->can_use_premium_code() ? 'fade' : $this->get_settings()['tax1_pointer_animation']; $tax2_pointer = !defined('WPR_ADDONS_PRO_VERSION') || !wpr_fs()->can_use_premium_code() ? 'none' : $this->get_settings()['tax2_pointer']; $tax2_pointer_animation = !defined('WPR_ADDONS_PRO_VERSION') || !wpr_fs()->can_use_premium_code() ? 'fade' : $this->get_settings()['tax2_pointer_animation']; $pointer_item_class = (isset($this->get_settings()['tax1_pointer']) && 'none' !== $this->get_settings()['tax1_pointer']) || (isset($this->get_settings()['tax2_pointer']) && 'none' !== $this->get_settings()['tax2_pointer']) ? 'wpr-pointer-item' : ''; // Pointer Class if ( 'wpr-grid-tax-style-1' === $settings['element_tax_style'] ) { $class .= ' wpr-pointer-'. $tax1_pointer; $class .= ' wpr-pointer-line-fx wpr-pointer-fx-'. $tax1_pointer_animation; } else { $class .= ' wpr-pointer-'. $tax2_pointer; $class .= ' wpr-pointer-line-fx wpr-pointer-fx-'. $tax2_pointer_animation; } echo '
'; echo '
'; // Text: Before if ( 'before' === $settings['element_extra_text_pos'] ) { echo ''. esc_html( $settings['element_extra_text'] ) .''; } // Icon: Before if ( 'before' === $settings['element_extra_icon_pos'] ) { ob_start(); \Elementor\Icons_Manager::render_icon($settings['element_extra_icon'], ['aria-hidden' => 'true']); $extra_icon = ob_get_clean(); echo ''; echo $extra_icon; echo ''; } // Taxonomies foreach ( $terms as $term ) { // Custom Colors $enable_custom_colors = !defined('WPR_ADDONS_PRO_VERSION') || !wpr_fs()->can_use_premium_code() ? '' : $this->get_settings()['tax1_custom_color_switcher']; if ( 'yes' === $enable_custom_colors ) { $custom_tax_styles = ''; $cfc_text = get_term_meta($term->term_id, $this->get_settings()['tax1_custom_color_field_text'], true); $cfc_bg = get_term_meta($term->term_id, $this->get_settings()['tax1_custom_color_field_bg'], true); $color_styles = 'color:'. $cfc_text .'; background-color:'. $cfc_bg .'; border-color:'. $cfc_bg .';'; $css_selector = '.elementor-element'. $this->get_unique_selector() .' .wpr-grid-tax-style-1 .inner-block a.wpr-tax-id-'. esc_attr($term->term_id); $custom_tax_styles .= $css_selector .'{'. $color_styles .'}'; echo ''; // TODO: take out of loop if possible } echo ''. esc_html( $term->name ); if ( ++$count !== count( $terms ) ) { echo ''. esc_html($settings['element_tax_sep']) .''; } echo ''; } // Icon: After if ( 'after' === $settings['element_extra_icon_pos'] ) { ob_start(); \Elementor\Icons_Manager::render_icon($settings['element_extra_icon'], ['aria-hidden' => 'true']); $extra_icon = ob_get_clean(); echo ''; echo $extra_icon; echo ''; } // Text: After if ( 'after' === $settings['element_extra_text_pos'] ) { echo ''. esc_html( $settings['element_extra_text'] ) .''; } echo '
'; echo '
'; } // Render Advanced Filters public function render_grid_filters( $settings ) { $taxonomy = $settings['filters_select']; // Return if Disabled if ( '' === $taxonomy || ! isset( $settings[ 'query_taxonomy_'. $taxonomy ] ) ) { return; } // Get Custom Filters $custom_filters = $settings[ 'query_taxonomy_'. $taxonomy ]; if ( !defined('WPR_ADDONS_PRO_VERSION') || !wpr_fs()->can_use_premium_code() ) { $settings['filters_default_filter'] = ''; $settings['filters_icon_align'] = ''; $settings['filters_count'] = ''; $settings['filters_pointer'] = 'none'; $settings['filters_pointer_animation'] = 'none'; } // Icon $left_icon = 'left' === $settings['filters_icon_align'] ? '' : ''; $right_icon = 'right' === $settings['filters_icon_align'] ? '' : ''; // Separator $left_separator = 'left' === $settings['filters_separator_align'] ? ''. esc_html($settings['filters_separator']) .'' : ''; $right_separator = 'right' === $settings['filters_separator_align'] ? ''. esc_html($settings['filters_separator']) .'' : ''; // Count $post_count = 'yes' === $settings['filters_count'] ? '' : ''; // Pointer Class $pointer_class = ' wpr-pointer-'. $settings['filters_pointer']; $pointer_class .= ' wpr-pointer-line-fx wpr-pointer-fx-'. $settings['filters_pointer_animation']; $pointer_item_class = (isset($settings['filters_pointer']) && 'none' !== $settings['filters_pointer']) ? 'class="wpr-pointer-item"' : ''; $pointer_item_class_name = (isset($settings['filters_pointer']) && 'none' !== $settings['filters_pointer']) ? 'wpr-pointer-item' : ''; // Filters List echo ''; } // Grid Settings public function add_grid_settings( $settings ) { if ( !defined('WPR_ADDONS_PRO_VERSION') || !wpr_fs()->can_use_premium_code() ) { $settings['layout_select'] = 'pro-ms' == $settings['layout_select'] ? 'fitRows' : $settings['layout_select']; $settings['filters_deeplinking'] = ''; $settings['filters_count'] = ''; $settings['filters_default_filter'] = ''; if ( 'pro-fd' == $settings['filters_animation'] || 'pro-fs' == $settings['filters_animation'] ) { $settings['filters_animation'] = 'zoom'; } } if ( 'fitRows' == $settings['layout_select'] ) { $stick_last_element_to_bottom = $settings['stick_last_element_to_bottom']; } else { $stick_last_element_to_bottom = 'no'; } global $wp_query; $this->current_post_type = $wp_query->query_vars['post_type'] ?? $settings['query_source']; $gutter_hr_widescreen = isset($settings['layout_gutter_hr_widescreen']['size']) ? $settings['layout_gutter_hr_widescreen']['size'] : $settings['layout_gutter_hr']['size']; $gutter_hr_desktop = $settings['layout_gutter_hr']['size']; $gutter_hr_laptop = isset($settings['layout_gutter_hr_laptop']['size']) ? $settings['layout_gutter_hr_laptop']['size'] : $gutter_hr_desktop; $gutter_hr_tablet_extra = isset($settings['layout_gutter_hr_tablet_extra']['size']) ? $settings['layout_gutter_hr_tablet_extra']['size'] : $gutter_hr_laptop; $gutter_hr_tablet = isset($settings['layout_gutter_hr_tablet']['size']) ? $settings['layout_gutter_hr_tablet']['size'] : $gutter_hr_tablet_extra; $gutter_hr_mobile_extra = isset($settings['layout_gutter_hr_mobile_extra']['size']) ? $settings['layout_gutter_hr_mobile_extra']['size'] : $gutter_hr_tablet; $gutter_hr_mobile = isset($settings['layout_gutter_hr_mobile']['size']) ? $settings['layout_gutter_hr_mobile']['size'] : $gutter_hr_mobile_extra; $gutter_vr_widescreen = isset($settings['layout_gutter_vr_widescreen']['size']) ? $settings['layout_gutter_vr_widescreen']['size'] : $settings['layout_gutter_vr']['size']; $gutter_vr_desktop = $settings['layout_gutter_vr']['size']; $gutter_vr_laptop = isset($settings['layout_gutter_vr_laptop']['size']) ? $settings['layout_gutter_vr_laptop']['size'] : $gutter_vr_desktop; $gutter_vr_tablet_extra = isset($settings['layout_gutter_vr_tablet_extra']['size']) ? $settings['layout_gutter_vr_tablet_extra']['size'] : $gutter_vr_laptop; $gutter_vr_tablet = isset($settings['layout_gutter_vr_tablet']['size']) ? $settings['layout_gutter_vr_tablet']['size'] : $gutter_vr_tablet_extra; $gutter_vr_mobile_extra = isset($settings['layout_gutter_vr_mobile_extra']['size']) ? $settings['layout_gutter_vr_mobile_extra']['size'] : $gutter_vr_tablet; $gutter_vr_mobile = isset($settings['layout_gutter_vr_mobile']['size']) ? $settings['layout_gutter_vr_mobile']['size'] : $gutter_vr_mobile_extra; $layout_settings = [ 'layout' => $settings['layout_select'], 'stick_last_element_to_bottom' => $stick_last_element_to_bottom, 'columns_desktop' => $settings['layout_columns'], 'gutter_hr' => $gutter_hr_desktop, 'gutter_hr_mobile' => $gutter_hr_mobile, 'gutter_hr_mobile_extra' => $gutter_hr_mobile_extra, 'gutter_hr_tablet' => $gutter_hr_tablet, 'gutter_hr_tablet_extra' => $gutter_hr_tablet_extra, 'gutter_hr_laptop' => $gutter_hr_laptop, 'gutter_hr_widescreen' => $gutter_hr_widescreen, 'gutter_vr' => $gutter_vr_desktop, 'gutter_vr_mobile' => $gutter_vr_mobile, 'gutter_vr_mobile_extra' => $gutter_vr_mobile_extra, 'gutter_vr_tablet' => $gutter_vr_tablet, 'gutter_vr_tablet_extra' => $gutter_vr_tablet_extra, 'gutter_vr_laptop' => $gutter_vr_laptop, 'gutter_vr_widescreen' => $gutter_vr_widescreen, 'animation' => $settings['layout_animation'], 'animation_duration' => $settings['layout_animation_duration'], 'animation_delay' => $settings['layout_animation_delay'], 'deeplinking' => $settings['filters_deeplinking'], 'filters_linkable' => $settings['filters_linkable'], 'filters_default_filter' => $settings['filters_default_filter'], 'filters_count' => $settings['filters_count'], 'filters_hide_empty' => $settings['filters_hide_empty'], 'filters_animation' => $settings['filters_animation'], 'filters_animation_duration' => $settings['filters_animation_duration'], 'filters_animation_delay' => $settings['filters_animation_delay'], 'pagination_type' => $settings['pagination_type'], 'pagination_max_pages' => WPR_Grid_Helpers::get_max_num_pages( $settings ), ]; if ( 'list' === $settings['layout_select'] ) { $layout_settings['media_align'] = $settings['layout_list_align']; $layout_settings['media_width'] = $settings['layout_list_media_width']['size']; $layout_settings['media_distance'] = $settings['layout_list_media_distance']['size']; } if ( !defined('WPR_ADDONS_PRO_VERSION') || !wpr_fs()->can_use_premium_code() ) { $settings['lightbox_popup_thumbnails'] = ''; $settings['lightbox_popup_thumbnails_default'] = ''; $settings['lightbox_popup_sharing'] = ''; } $layout_settings['lightbox'] = [ 'selector' => '.wpr-grid-image-wrap', 'iframeMaxWidth' => '60%', 'hash' => false, 'autoplay' => $settings['lightbox_popup_autoplay'], 'pause' => absint( ( floatval( $settings['lightbox_popup_pause'] ?: 1 ) ) * 1000 ), 'progressBar' => $settings['lightbox_popup_progressbar'], 'counter' => $settings['lightbox_popup_counter'], 'controls' => $settings['lightbox_popup_arrows'], 'getCaptionFromTitleOrAlt' => $settings['lightbox_popup_captions'], 'thumbnail' => $settings['lightbox_popup_thumbnails'], 'showThumbByDefault' => $settings['lightbox_popup_thumbnails_default'], 'share' => $settings['lightbox_popup_sharing'], 'zoom' => $settings['lightbox_popup_zoom'], 'fullScreen' => $settings['lightbox_popup_fullscreen'], 'download' => $settings['lightbox_popup_download'], ]; if ( 'yes' === $settings['filters_experiment'] || 'yes' === $settings['advanced_filters'] ) { $layout_settings['grid_settings'] = [ // General Settings 'filters_experiment' => isset($settings['filters_experiment']) ? $settings['filters_experiment'] : null, 'advanced_filters' => isset($settings['advanced_filters']) ? $settings['advanced_filters'] : null, 'layout_select' => isset($settings['layout_select']) ? $settings['layout_select'] : null, 'layout_animation' => isset($settings['layout_animation']) ? $settings['layout_animation'] : null, 'layout_animation_duration' => isset($settings['layout_animation_duration']) ? $settings['layout_animation_duration'] : null, 'layout_animation_delay' => isset($settings['layout_animation_delay']) ? $settings['layout_animation_delay'] : null, 'pagination_type' => isset($settings['pagination_type']) ? $settings['pagination_type'] : null, 'pagination_max_pages' => WPR_Grid_Helpers::get_max_num_pages($settings), // Filter Settings 'filters_deeplinking' => isset($settings['filters_deeplinking']) ? $settings['filters_deeplinking'] : null, 'filters_linkable' => isset($settings['filters_linkable']) ? $settings['filters_linkable'] : null, 'filters_default_filter' => isset($settings['filters_default_filter']) ? $settings['filters_default_filter'] : null, 'filters_count' => isset($settings['filters_count']) ? $settings['filters_count'] : null, 'filters_hide_empty' => isset($settings['filters_hide_empty']) ? $settings['filters_hide_empty'] : null, 'filters_animation' => isset($settings['filters_animation']) ? $settings['filters_animation'] : null, 'filters_animation_duration' => isset($settings['filters_animation_duration']) ? $settings['filters_animation_duration'] : null, 'filters_animation_delay' => isset($settings['filters_animation_delay']) ? $settings['filters_animation_delay'] : null, // Lightbox Settings 'lightbox_popup_autoplay' => isset($settings['lightbox_popup_autoplay']) ? $settings['lightbox_popup_autoplay'] : null, 'lightbox_popup_pause' => isset($settings['lightbox_popup_pause']) ? $settings['lightbox_popup_pause'] : null, 'lightbox_popup_progressbar' => isset($settings['lightbox_popup_progressbar']) ? $settings['lightbox_popup_progressbar'] : null, 'lightbox_popup_counter' => isset($settings['lightbox_popup_counter']) ? $settings['lightbox_popup_counter'] : null, 'lightbox_popup_arrows' => isset($settings['lightbox_popup_arrows']) ? $settings['lightbox_popup_arrows'] : null, 'lightbox_popup_captions' => isset($settings['lightbox_popup_captions']) ? $settings['lightbox_popup_captions'] : null, 'lightbox_popup_thumbnails' => isset($settings['lightbox_popup_thumbnails']) ? $settings['lightbox_popup_thumbnails'] : null, 'lightbox_popup_thumbnails_default' => isset($settings['lightbox_popup_thumbnails_default']) ? $settings['lightbox_popup_thumbnails_default'] : null, 'lightbox_popup_sharing' => isset($settings['lightbox_popup_sharing']) ? $settings['lightbox_popup_sharing'] : null, 'lightbox_popup_zoom' => isset($settings['lightbox_popup_zoom']) ? $settings['lightbox_popup_zoom'] : null, 'lightbox_popup_fullscreen' => isset($settings['lightbox_popup_fullscreen']) ? $settings['lightbox_popup_fullscreen'] : null, 'lightbox_popup_download' => isset($settings['lightbox_popup_download']) ? $settings['lightbox_popup_download'] : null, // Query Settings 'query_source' => isset($settings['query_source']) ? $settings['query_source'] : null, 'current_query_source' => $this->current_post_type, 'query_author' => isset($settings['query_author']) ? $settings['query_author'] : null, 'query_posts_per_page' => isset($settings['query_posts_per_page']) ? $settings['query_posts_per_page'] : null, 'query_offset' => isset($settings['query_offset']) ? $settings['query_offset'] : null, 'query_randomize' => isset($settings['query_randomize']) ? $settings['query_randomize'] : null, 'order_posts' => isset($settings['order_posts']) ? $settings['order_posts'] : null, 'order_posts_by_acf' => isset($settings['order_posts_by_acf']) ? $settings['order_posts_by_acf'] : null, 'order_direction' => isset($settings['order_direction']) ? $settings['order_direction'] : null, 'query_exclude_no_images' => isset($settings['query_exclude_no_images']) ? $settings['query_exclude_no_images'] : null, 'query_selection' => isset($settings['query_selection']) ? $settings['query_selection'] : null, 'query_tax_selection' => isset($settings['query_tax_selection']) ? $settings['query_tax_selection'] : null, 'query_manual' => isset($settings['query_manual_' . $settings['query_source']]) ? $settings['query_manual_' . $settings['query_source']] : null, 'display_scheduled_posts' => isset($settings['display_scheduled_posts']) ? $settings['display_scheduled_posts'] : null, 'query_not_found_text' => isset($settings['query_not_found_text']) ? $settings['query_not_found_text'] : null, 'layout_image_crop' => [ 'layout_image_crop_size' => isset($settings['layout_image_crop_size']) ? $settings['layout_image_crop_size'] : null, 'layout_image_crop_custom_dimension' => isset($settings['layout_image_crop_custom_dimension']) ? $settings['layout_image_crop_custom_dimension'] : null, ], 'image_effects' => isset($settings['image_effects']) ? $settings['image_effects'] : null, 'image_effects_animation_timing' => isset($settings['image_effects_animation_timing']) ? $settings['image_effects_animation_timing'] : null, 'image_effects_size' => isset($settings['image_effects_size']) ? $settings['image_effects_size'] : null, 'image_effects_direction' => isset($settings['image_effects_direction']) ? $settings['image_effects_direction'] : null, 'open_links_in_new_tab' => isset($settings['open_links_in_new_tab']) ? $settings['open_links_in_new_tab'] : null, 'post_link_source' => isset($settings['post_link_source']) ? $settings['post_link_source'] : null, 'post_link_custom_field_key' => isset($settings['post_link_custom_field_key']) ? $settings['post_link_custom_field_key'] : null, 'overlay_post_link' => isset($settings['overlay_post_link']) ? $settings['overlay_post_link'] : null, 'secondary_img_on_hover' => isset($settings['secondary_img_on_hover']) ? $settings['secondary_img_on_hover'] : null, 'grid_lazy_loading' => isset($settings['grid_lazy_loading']) ? $settings['grid_lazy_loading'] : null, 'overlay_animation' => isset($settings['overlay_animation']) ? $settings['overlay_animation'] : null, 'overlay_animation_size' => isset($settings['overlay_animation_size']) ? $settings['overlay_animation_size'] : null, 'overlay_animation_timing' => isset($settings['overlay_animation_timing']) ? $settings['overlay_animation_timing'] : null, 'overlay_animation_tr' => isset($settings['overlay_animation_tr']) ? $settings['overlay_animation_tr'] : null, 'overlay_image' => isset($settings['overlay_image']) ? $settings['overlay_image'] : null, 'title_pointer' => isset($settings['title_pointer']) ? $settings['title_pointer'] : null, 'title_pointer_animation' => isset($settings['title_pointer_animation']) ? $settings['title_pointer_animation'] : null, 'read_more_animation' => isset($settings['read_more_animation']) ? $settings['read_more_animation'] : null, 'tax1_pointer' => isset($settings['tax1_pointer']) ? $settings['tax1_pointer'] : null, 'tax1_pointer_animation' => isset($settings['tax1_pointer_animation']) ? $settings['tax1_pointer_animation'] : null, 'tax2_pointer' => isset($settings['tax2_pointer']) ? $settings['tax2_pointer'] : null, 'tax2_pointer_animation' => isset($settings['tax2_pointer_animation']) ? $settings['tax2_pointer_animation'] : null, 'tax1_custom_color_switcher' => isset($settings['tax1_custom_color_switcher']) ? $settings['tax1_custom_color_switcher'] : null, 'tax1_custom_color_field_text' => isset($settings['tax1_custom_color_field_text']) ? $settings['tax1_custom_color_field_text'] : null, 'tax1_custom_color_field_bg' => isset($settings['tax1_custom_color_field_bg']) ? $settings['tax1_custom_color_field_bg'] : null, 'layout_pagination' => isset($settings['layout_pagination']) ? $settings['layout_pagination'] : null, 'check_ajax_filter' => 'yes', // Taxonomies // Dynamically add taxonomy settings ] + array_reduce(array_keys($this->get_available_taxonomies() ?? []), function($carry, $slug) use ($settings) { $carry['query_taxonomy_'. $slug] = isset($settings['query_taxonomy_'. $slug]) ? $settings['query_taxonomy_'. $slug] : null; return $carry; }, []) + array_reduce(array_keys($this->post_types ?? []), function($carry, $slug) use ($settings) { $carry['query_exclude_'. $slug] = isset($settings['query_exclude_'. $slug]) ? $settings['query_exclude_'. $slug] : null; $carry['query_manual_'. $slug] = isset($settings['query_manual_'. $slug]) ? $settings['query_manual_'. $slug] : null; return $carry; }, []) + [ // Repeater Controls 'grid_elements' => isset($settings['grid_elements']) ? $settings['grid_elements'] : null, // Assuming 'items' is a repeater control // Add any necessary controls from styles tab here if needed ]; } $this->add_render_attribute( 'grid-settings', [ 'data-settings' => wp_json_encode( $layout_settings ), 'data-advanced-filters' => ( 'yes' === $settings['advanced_filters'] ) ? 'yes' : 'no' ] ); } public function add_slider_settings( $settings ) { $slider_is_rtl = is_rtl(); $slider_direction = $slider_is_rtl ? 'rtl' : 'ltr'; if ( !defined('WPR_ADDONS_PRO_VERSION') || !wpr_fs()->can_use_premium_code() ) { $settings['layout_slider_autoplay'] = ''; $settings['layout_slider_autoplay_duration'] = 0; $settings['layout_slider_pause_on_hover'] = ''; } if ( 'pro-3' == $settings['layout_slider_amount'] || 'pro-4' == $settings['layout_slider_amount'] || 'pro-5' == $settings['layout_slider_amount'] || 'pro-6' == $settings['layout_slider_amount'] ) { $settings['layout_slider_amount'] = 1; } $slider_options = [ 'rtl' => $slider_is_rtl, 'infinite' => ( $settings['layout_slider_loop'] === 'yes' ), 'speed' => absint( ( floatval( $settings['layout_slider_effect_duration'] ?: 1 ) ) * 1000 ), 'arrows' => true, 'dots' => true, 'autoplay' => ( $settings['layout_slider_autoplay'] === 'yes' ), 'autoplaySpeed' => absint( ( floatval( $settings['layout_slider_autoplay_duration'] ?: 1 ) ) * 1000 ), 'pauseOnHover' => $settings['layout_slider_pause_on_hover'], 'prevArrow' => '#wpr-grid-slider-prev-'. $this->get_id(), 'nextArrow' => '#wpr-grid-slider-next-'. $this->get_id(), 'sliderSlidesToScroll' => $settings['layout_slides_to_scroll'] ? absint( $settings['layout_slides_to_scroll'] ) : 1, ]; if ( !defined('WPR_ADDONS_PRO_VERSION') || !wpr_fs()->can_use_premium_code() ) { $settings['lightbox_popup_thumbnails'] = ''; $settings['lightbox_popup_thumbnails_default'] = ''; $settings['lightbox_popup_sharing'] = ''; } // Lightbox Settings $slider_options['lightbox'] = [ 'selector' => 'article:not(.slick-cloned) .wpr-grid-image-wrap', 'iframeMaxWidth' => '60%', 'hash' => false, 'autoplay' => $settings['lightbox_popup_autoplay'], 'pause' => absint( ( floatval( $settings['lightbox_popup_pause'] ?: 1 ) ) * 1000 ), 'progressBar' => $settings['lightbox_popup_progressbar'], 'counter' => $settings['lightbox_popup_counter'], 'controls' => $settings['lightbox_popup_arrows'], 'getCaptionFromTitleOrAlt' => $settings['lightbox_popup_captions'], 'thumbnail' => $settings['lightbox_popup_thumbnails'], 'showThumbByDefault' => $settings['lightbox_popup_thumbnails_default'], 'share' => $settings['lightbox_popup_sharing'], 'zoom' => $settings['lightbox_popup_zoom'], 'fullScreen' => $settings['lightbox_popup_fullscreen'], 'download' => $settings['lightbox_popup_download'], ]; if ( $settings['layout_slider_amount'] === 1 && $settings['layout_slider_effect'] === 'fade' ) { $slider_options['fade'] = true; } $this->add_render_attribute( 'slider-settings', [ 'dir' => esc_attr( $slider_direction ), 'data-slick' => wp_json_encode( $slider_options ), ] ); } protected function render() { // Get Settings $settings = $this->get_settings(); // Get Posts $posts = new \WP_Query( WPR_Grid_Helpers::get_main_query_args($settings, []) ); // Loop: Start if ( $posts->have_posts() ) : // Grid Settings if ( 'slider' !== $settings['layout_select'] ) { // Filters $this->render_grid_filters( $settings ); $this->add_grid_settings( $settings ); $render_attribute = $this->get_render_attribute_string( 'grid-settings' ); // Slider Settings } else { $this->add_slider_settings( $settings ); $render_attribute = $this->get_render_attribute_string( 'slider-settings' ); } echo '
'; while ( $posts->have_posts() ) : $posts->the_post(); // Post Class $post_class = implode( ' ', get_post_class( 'wpr-grid-item elementor-clearfix', get_the_ID() ) ); // Grid Item echo '
'; // Password Protected Form WPR_Grid_Helpers::render_password_protected_input( $settings ); // Inner Wrapper echo '
'; // Content: Above Media WPR_Grid_Helpers::get_elements_by_location( 'above', $settings, get_the_ID() ); // Media if ( has_post_thumbnail() ) { echo '
'; // Post Thumbnail WPR_Grid_Helpers::render_post_thumbnail( $settings, get_the_ID() ); // Media Hover echo '
'; // Media Overlay WPR_Grid_Helpers::render_media_overlay( $settings ); // Content: Over Media WPR_Grid_Helpers::get_elements_by_location( 'over', $settings, get_the_ID() ); echo '
'; echo '
'; } // Content: Below Media WPR_Grid_Helpers::get_elements_by_location( 'below', $settings, get_the_ID() ); echo '
'; // End .wpr-grid-item-inner echo '
'; // End .wpr-grid-item endwhile; // Grid Wrap echo '
'; // reset wp_reset_postdata(); if ( 'slider' === $settings['layout_select'] ) { // Slider Navigation echo '
'; echo '
'. Utilities::get_wpr_icon( $settings['layout_slider_nav_icon'], '' ) .'
'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo '
'. Utilities::get_wpr_icon( $settings['layout_slider_nav_icon'], '' ) .'
'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo '
'; // Slider Dots echo '
'; } // Pagination WPR_Grid_Helpers::render_grid_pagination( $settings ); // No Posts Found else: if ( 'yes' === $settings['advanced_filters'] ) { // Grid Settings if ( 'slider' !== $settings['layout_select'] ) { $this->add_grid_settings( $settings ); $render_attribute = $this->get_render_attribute_string( 'grid-settings' ); // Slider Settings } else { $this->add_slider_settings( $settings ); $render_attribute = $this->get_render_attribute_string( 'slider-settings' ); } echo '
'; if ( 'dynamic' === $settings['query_selection'] ) { echo '

'. esc_html($settings['query_not_found_text']) .'

'; } // Grid Wrap echo '
'; // Pagination WPR_Grid_Helpers::render_grid_pagination( $settings ); } else { if ( 'dynamic' === $settings['query_selection'] ) { echo '

'. esc_html($settings['query_not_found_text']) .'

'; } } // Loop: End endif; } }