Loading...
) { $filter = get_term_by( 'id', $term_id, $taxonomy ); $data_attr = 'post_tag' === $taxonomy ? 'tag-'. $filter->slug : $taxonomy .'-'. $filter->slug; // Parent Filters if ( 0 === $filter->parent ) { $children = get_term_children( $filter->term_id, $taxonomy ); $data_role = ! empty($children) ? ' data-role="parent"' : ''; echo ''; if ( 'yes' !== $settings['filters_linkable'] ) { echo ''. $left_separator .''. $left_icon . esc_html($filter->name) . $right_icon . $post_count .''. $right_separator; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } else { echo ''. $left_separator .''. $left_icon . esc_html($filter->name) . $right_icon . $post_count .''. $right_separator; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } echo ''; // Get Sub Filters } else { array_push( $parent_filters, $filter->parent ); } } // All Filters } else { $all_filters = get_terms( $taxonomy ); $parent_filters = []; foreach ( $all_filters as $key => $filter ) { $data_attr = 'post_tag' === $taxonomy ? 'tag-'. $filter->slug : $taxonomy .'-'. $filter->slug; // Parent Filters if ( 0 === $filter->parent ) { $children = get_term_children( $filter->term_id, $taxonomy ); $data_role = ! empty($children) ? ' data-role="parent"' : ''; $hidden_class = $this->get_hidden_filter_class($filter->slug, $settings); echo ''; if ( 'yes' !== $settings['filters_linkable'] ) { echo ''. $left_separator .''. $left_icon . esc_html($filter->name) . $right_icon . $post_count .''. $right_separator; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } else { echo ''. $left_separator .''. $left_icon . esc_html($filter->name) . $right_icon . $post_count .''. $right_separator; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } echo ''; // Get Sub Filters } else { array_push( $parent_filters, $filter->parent ); } } } // Sub Filters if ( 'yes' !== $settings['filters_linkable'] ) { foreach ( array_unique( $parent_filters ) as $key => $parent_filter ) { $parent = get_term_by( 'id', $parent_filter, $taxonomy ); $children = get_term_children( $parent_filter, $taxonomy ); $data_attr = 'post_tag' === $taxonomy ? 'tag-'. $parent->slug : $taxonomy .'-'. $parent->slug; echo '
    '; echo '
  • '; echo ''; echo '  '. esc_html__( 'Back', 'wpr-addons' ); echo ''; echo '
  • '; foreach ( $children as $child ) { $sub_filter = get_term_by( 'id', $child, $taxonomy ); $data_attr = 'post_tag' === $taxonomy ? 'tag-'. $sub_filter->slug : $taxonomy .'-'. $sub_filter->slug; echo '
  • '; echo ''. $left_separator .''. $left_icon . esc_html($sub_filter->name) . $right_icon . $post_count .''. $right_separator; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo '
  • '; } echo '
'; } } echo ''; } public function get_hidden_filter_class($slug, $settings) { $posts = new \WP_Query( $this->get_main_query_args() ); $visible_categories = []; if ( $posts->have_posts() ) { while ( $posts->have_posts() ) { $posts->the_post(); $categories = get_the_category(); foreach ($categories as $key => $category) { array_push($visible_categories, $category->slug); } } $visible_categories = array_unique($visible_categories); wp_reset_postdata(); } return ( ! in_array($slug, $visible_categories) && 'yes' == $settings['filters_hide_empty'] ) ? ' wpr-hidden-element' : ''; } // Render Grid Pagination public function render_grid_pagination( $settings ) { // Return if Disabled if ( 'yes' !== $settings['layout_pagination'] || 1 === $this->get_max_num_pages( $settings ) || 'slider' === $settings['layout_select'] ) { return; } if ( (isset($this->my_upsells) && (count($this->my_upsells) <= $settings['query_posts_per_page'])) || (isset($this->crossell_ids) && (count($this->crossell_ids) <= $settings['query_posts_per_page'])) ) { return; } global $paged; $pages = $this->get_max_num_pages( $settings ); $paged = empty( $paged ) ? 1 : $paged; if ( ! wpr_fs()->can_use_premium_code() ) { $settings['pagination_type'] = 'pro-is' == $settings['pagination_type'] ? 'default' : $settings['pagination_type']; } echo '
'; // Default if ( 'default' === $settings['pagination_type'] ) { if ( $paged < $pages ) { echo ''; echo Utilities::get_wpr_icon( $settings['pagination_on_icon'], 'left' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo esc_html($settings['pagination_older_text']); echo ''; } elseif ( 'yes' === $settings['pagination_disabled_arrows'] ) { echo ''; echo Utilities::get_wpr_icon( $settings['pagination_on_icon'], 'left' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo esc_html($settings['pagination_older_text']); echo ''; } if ( $paged > 1 ) { echo ''; echo esc_html($settings['pagination_newer_text']); echo Utilities::get_wpr_icon( $settings['pagination_on_icon'], 'right' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo ''; } elseif ( 'yes' === $settings['pagination_disabled_arrows'] ) { echo ''; echo esc_html($settings['pagination_newer_text']); echo Utilities::get_wpr_icon( $settings['pagination_on_icon'], 'right' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo ''; } // Numbered } elseif ( 'numbered' === $settings['pagination_type'] ) { $range = $settings['pagination_range']; $showitems = ( $range * 2 ) + 1; if ( 1 !== $pages ) { if ( 'yes' === $settings['pagination_prev_next'] || 'yes' === $settings['pagination_first_last'] ) { echo '
'; if ( 'yes' === $settings['pagination_first_last'] ) { if ( $paged >= 2 ) { echo ''; // echo ''; // echo ''; echo Utilities::get_wpr_icon( $settings['pagination_fl_icon'], 'left' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo ''. esc_html($settings['pagination_first_text']) .''; echo ''; } elseif ( 'yes' === $settings['pagination_disabled_arrows'] ) { echo ''; echo Utilities::get_wpr_icon( $settings['pagination_fl_icon'], 'left' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo ''. esc_html($settings['pagination_first_text']) .''; echo ''; } } if ( 'yes' === $settings['pagination_prev_next'] ) { if ( $paged > 1 ) { echo ''; echo Utilities::get_wpr_icon( $settings['pagination_pn_icon'], 'left' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo ''. esc_html($settings['pagination_prev_text']) .''; echo ''; } elseif ( 'yes' === $settings['pagination_disabled_arrows'] ) { echo ''; echo Utilities::get_wpr_icon( $settings['pagination_pn_icon'], 'left' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo ''. esc_html($settings['pagination_prev_text']) .''; echo ''; } } echo '
'; } for ( $i = 1; $i <= $pages; $i++ ) { if ( 1 !== $pages && ( ! ( $i >= $paged + $range + 1 || $i <= $paged - $range - 1 ) || $pages <= $showitems ) ) { if ( $paged === $i ) { echo ''. esc_html($i) .''; } else { // var_dump(get_pagenum_link( $i, true ), substr(get_pagenum_link( $i, true ), 0, strpos(get_pagenum_link( $i, true ), '?orderby'))); echo ''. esc_html($i) .''; } } } if ( 'yes' === $settings['pagination_prev_next'] || 'yes' === $settings['pagination_first_last'] ) { echo '
'; if ( 'yes' === $settings['pagination_prev_next'] ) { if ( $paged < $pages ) { echo ''; echo ''. esc_html($settings['pagination_next_text']) .''; echo Utilities::get_wpr_icon( $settings['pagination_pn_icon'], 'right' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo ''; } elseif ( 'yes' === $settings['pagination_disabled_arrows'] ) { echo ''; echo ''. esc_html($settings['pagination_next_text']) .''; echo Utilities::get_wpr_icon( $settings['pagination_pn_icon'], 'right' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo ''; } } if ( 'yes' === $settings['pagination_first_last'] ) { if ( $paged <= $pages - 1 ) { echo ''; echo ''. esc_html($settings['pagination_last_text']) .''; echo Utilities::get_wpr_icon( $settings['pagination_fl_icon'], 'right' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo ''; } elseif ( 'yes' === $settings['pagination_disabled_arrows'] ) { echo ''; echo ''. esc_html($settings['pagination_last_text']) .''; echo Utilities::get_wpr_icon( $settings['pagination_fl_icon'], 'right' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo ''; } } echo '
'; } } // Load More / Infinite Scroll } else { echo ''; // echo ''; // echo ''; echo esc_html($settings['pagination_load_more_text']); echo ''; echo '
'; switch ( $settings['pagination_animation'] ) { case 'loader-1': echo '
'; echo '
'; echo '
'; echo '
'; break; case 'loader-2': echo '
'; echo '
'; echo '
'; echo '
'; echo '
'; echo '
'; echo '
'; break; case 'loader-3': echo '
'; break; case 'loader-4': echo '
'; echo '
'; echo '
'; echo '
'; break; case 'loader-5': echo '
'; echo '
'; echo '
'; echo '
'; echo '
'; break; case 'loader-6': echo '
'; echo '
'; echo '
'; echo '
'; echo '
'; echo '
'; echo '
'; echo '
'; echo '
'; echo '
'; echo '
'; echo '
'; echo '
'; echo '
'; break; default: break; } echo '
'; echo '

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

'; } echo '
'; } // Grid Settings public function add_grid_settings( $settings ) { if ( ! 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'; } $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' => $this->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 ( ! 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' => $settings['lightbox_popup_pause'] * 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'], ]; $this->add_render_attribute( 'grid-settings', [ 'data-settings' => wp_json_encode( $layout_settings ), ] ); } public function add_slider_settings( $settings ) { $slider_is_rtl = is_rtl(); $slider_direction = $slider_is_rtl ? 'rtl' : 'ltr'; if ( ! wpr_fs()->can_use_premium_code() ) { $settings['layout_slider_autoplay'] = ''; $settings['layout_slider_autoplay_duration'] = 0; $settings['layout_slider_pause_on_hover'] = ''; } $slider_options = [ 'rtl' => $slider_is_rtl, 'infinite' => ( $settings['layout_slider_loop'] === 'yes' ), 'speed' => absint( $settings['layout_slider_effect_duration'] * 1000 ), 'arrows' => true, 'dots' => true, 'autoplay' => ( $settings['layout_slider_autoplay'] === 'yes' ), 'autoplaySpeed' => absint( $settings['layout_slider_autoplay_duration'] * 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'], ]; if ( ! 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' => $settings['lightbox_popup_pause'] * 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(); if ( ! class_exists( 'WooCommerce' ) ) { echo '

'. esc_html__( 'WooCommerce is NOT active!', 'wpr-addons' ) .'

'; return; } // Get Posts $posts = new \WP_Query( $this->get_main_query_args() ); // Loop: Start if ( $posts->have_posts() ) : $post_index = 0; $tags_whitelist = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'span', 'p']; $grid_linked_products_heading_tag = Utilities::validate_html_tags_wl( $settings['grid_linked_products_heading_tag'], 'h2', $tags_whitelist ); if ( ('upsell' === $settings['query_selection'] && '' !== $settings['grid_linked_products_heading']) || ('cross-sell' === $settings['query_selection'] && '' !== $settings['grid_linked_products_heading']) ) { echo '
'; echo '<'. $grid_linked_products_heading_tag .'>'. esc_html( $settings['grid_linked_products_heading'] ) .''; echo '
'; } // Grid Settings if ( 'slider' !== $settings['layout_select'] ) { if ( 'upsell' !== $settings['query_selection'] && 'cross-sell' !== $settings['query_selection'] ) { // Sort & Results $this->render_grid_sorting( $settings, $posts ); if ( !((is_product_category() || is_product_tag()) && !wpr_fs()->can_use_premium_code()) ) { // 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' ); } // Grid Wrap echo '
'; while ( $posts->have_posts() ) : $posts->the_post(); // $post_index++; // if ( Utilities::is_new_free_user() && $post_index > 12 ) { // return; // } // Post Class $post_class = implode( ' ', get_post_class( 'wpr-grid-item elementor-clearfix', get_the_ID() ) ); // Grid Item echo '
'; // Password Protected Form $this->render_password_protected_input( $settings ); // Inner Wrapper echo '
'; // Content: Above Media $this->get_elements_by_location( 'above', $settings, get_the_ID() ); // Media echo '
'; // Post Thumbnail $this->render_product_thumbnail( $settings, get_the_ID() ); // Media Hover echo '
'; // Filter to compensate woo incompatibility echo apply_filters('wpr_grid_media_hover_content', '', get_the_ID()); // Media Overlay $this->render_media_overlay( $settings ); // Content: Over Media $this->get_elements_by_location( 'over', $settings, get_the_ID() ); echo '
'; echo '
'; // Content: Below Media $this->get_elements_by_location( 'below', $settings, get_the_ID() ); echo '
'; // End .wpr-grid-item-inner echo '
'; // End .wpr-grid-item endwhile; // reset wp_reset_postdata(); // Grid Wrap echo '
'; if ( 'slider' === $settings['layout_select'] ) { if ( $posts->found_posts > (int) $settings['layout_slider_amount'] && (int) $settings['layout_slider_amount'] < $settings['query_posts_per_page'] ) { // 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 $this->render_grid_pagination( $settings ); // No Posts Found else: if ('upsell' !== $settings['query_selection'] && 'cross-sell' !== $settings['query_selection']) { echo '

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

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