<?php if (!defined('ABSPATH')) { exit; } if (WC_Prdctfltr::prdctfltr_check_appearance() === false) { return; } do_action('prdctfltr_filter_hooks'); global $wp, $prdctfltr_global; if (!isset($prdctfltr_global['done_filters'])) { WC_Prdctfltr::make_global($_REQUEST, 'FALSE'); } if (is_shop() || is_product_taxonomy()) { global $wp_the_query; $paged = max(1, $wp_the_query->get('paged')); $per_page = $wp_the_query->get('posts_per_page'); $total = $wp_the_query->found_posts; $first = $per_page * $paged - $per_page + 1; $last = $wp_the_query->get('offset') > 0 ? min($total, $wp_the_query->get('offset') + $wp_the_query->get('posts_per_page')) : min($total, $wp_the_query->get('posts_per_page') * $paged); $pf_request = $wp_the_query->request; } else { if (isset($prdctfltr_global['instance_data'])) { $paged = $prdctfltr_global['instance_data']['paged']; $per_page = $prdctfltr_global['instance_data']['per_page']; $total = $prdctfltr_global['instance_data']['total']; $first = $prdctfltr_global['instance_data']['first']; $last = $prdctfltr_global['instance_data']['last']; $pf_request = $prdctfltr_global['instance_data']['request']; } else { $paged = 1;
public static function prdctfltr_respond_550() { if (!is_array($_POST)) { die(0); exit; } $set = array('pf_request' => array(), 'pf_requested' => array(), 'pf_filters' => array(), 'pf_mode' => 'archive', 'pf_widget_title' => null, 'pf_set' => 'shortcode', 'pf_paged' => '', 'pf_pagefilters' => array(), 'pf_shortcode' => null, 'pf_offset' => 0, 'pf_restrict' => '', 'pf_adds' => array(), 'pf_orderby_template' => null, 'pf_count_template' => null); $opt = array(); foreach ($set as $k => $v) { if (isset($_POST[$k]) && $_POST[$k] !== '') { $opt[$k] = $_POST[$k]; } else { $opt[$k] = $v; } } self::$settings['opt'] = $opt; $pf_request = isset($opt['pf_request']) ? $opt['pf_request'] : array(); $pf_requested = isset($opt['pf_requested']) ? $opt['pf_requested'] : array(); if (empty($pf_request) || empty($pf_requested)) { die(0); exit; } global $prdctfltr_global; $prdctfltr_global['pagefilters'] = $opt['pf_pagefilters']; $prdctfltr_global['unique_id'] = key($pf_requested); $active_filters = isset($opt['pf_filters']) && is_array($opt['pf_filters']) ? $opt['pf_filters'] : array(); $curr_filters = array(); foreach ($active_filters as $k => $v) { $curr_filters = array_merge($curr_filters, $v); } if ($opt['pf_set'] == 'shortcode') { $prdctfltr_global['sc_init'] = true; $prdctfltr_global['sc_query'] = $opt['pf_shortcode']; $prdctfltr_global['active_permalinks'] = $opt['pf_shortcode']; if (isset($prdctfltr_global['pagefilters'][$prdctfltr_global['unique_id']]['atts'])) { extract($prdctfltr_global['pagefilters'][$prdctfltr_global['unique_id']]['atts']); $prdctfltr_global['ajax_js'] = isset($prdctfltr_global['pagefilters'][$prdctfltr_global['unique_id']]['args']) ? $prdctfltr_global['pagefilters'][$prdctfltr_global['unique_id']]['args'] : array(); $prdctfltr_global['ajax_atts'] = isset($prdctfltr_global['pagefilters'][$prdctfltr_global['unique_id']]['atts_sc']) ? $prdctfltr_global['pagefilters'][$prdctfltr_global['unique_id']]['atts_sc'] : array(); } else { if (is_array($prdctfltr_global['pagefilters'])) { $pf_pagefilters = $prdctfltr_global['pagefilters']; reset($pf_pagefilters); $sc_key = key($pf_pagefilters); extract($prdctfltr_global['pagefilters'][$sc_key]['atts']); $prdctfltr_global['ajax_js'] = isset($prdctfltr_global['pagefilters'][$sc_key]['args']) ? $prdctfltr_global['pagefilters'][$sc_key]['args'] : array(); $prdctfltr_global['ajax_atts'] = isset($prdctfltr_global['pagefilters'][$sc_key]['atts_sc']) ? $prdctfltr_global['pagefilters'][$sc_key]['atts_sc'] : array(); } } $prdctfltr_global['sc_ajax'] = true; $prdctfltr_global['action'] = $action !== '' ? $action : ''; $prdctfltr_global['preset'] = $preset !== '' ? $preset : ''; $prdctfltr_global['disable_overrides'] = $disable_overrides == 'yes' ? 'yes' : 'no'; $pagination_args = array('sc' => 'yes', 'ajax' => 'yes', 'type' => $pagination); } else { $prdctfltr_global['ajax_adds'] = $opt['pf_adds']; $pagination_args = array(); $use_filter = 'yes'; } if (!isset($prdctfltr_global['done_filters']) || $prdctfltr_global['done_filters'] !== true) { WC_Prdctfltr::make_global($curr_filters, 'AJAX'); } $data = array(); if ($opt['pf_mode'] == 'archive') { $query = self::make_query(); if ($opt['pf_restrict'] !== 'pagination') { foreach ($pf_request as $filter => $options) { if (in_array($filter, $pf_requested)) { ob_start(); $prdctfltr_global['unique_id'] = $filter; if ($options['widget_search'] !== 'yes') { if ($use_filter == 'yes') { include WC_Prdctfltr::$dir . 'woocommerce/loop/product-filter.php'; } } else { $widget_options = $opt['pf_request'][$filter]['widget_options']; $defaults = array('style' => 'pf_default', 'preset' => '', 'disable_overrides' => 'no', 'action' => ''); foreach ($defaults as $k => $v) { if (!isset($widget_options[$k])) { $widget_options[$k] = $v; } } if (isset($opt['pf_widget_title'])) { $curr_title = explode('%%%', $opt['pf_widget_title']); } the_widget('prdctfltr', 'preset=' . $widget_options['style'] . '&template=' . $widget_options['preset'] . '&disable_overrides=' . $widget_options['disable_overrides'], array('before_title' => stripslashes($curr_title[0]), 'after_title' => stripslashes($curr_title[1]))); } $data[$filter] = ob_get_clean(); } } } $data['products'] = self::get_products($query); if (isset($prdctfltr_global['ranges'])) { $data['ranges'] = $prdctfltr_global['ranges']; } $data['pagination'] = self::get_pagination($pagination_args); if (isset($opt['pf_count_template'])) { global $wp_query; $wp_query = $query; if ($wp_query->found_posts > 0) { ob_start(); woocommerce_result_count(); $data['count'] = ob_get_clean(); } else { $data['count'] = ''; } } if (isset($opt['pf_orderby_template'])) { if (!isset($_GET['orderby']) && isset($prdctfltr_global['active_filters']['orderby'])) { $_GET['orderby'] = $prdctfltr_global['active_filters']['orderby']; } else { if (!isset($_GET['orderby'])) { $_GET['orderby'] = 'date'; } } if (isset($_GET['orderby'])) { $orderby = $_GET['orderby']; ob_start(); woocommerce_catalog_ordering(); $data['orderby'] = ob_get_clean(); } } } wp_send_json($data); }