<?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;
Beispiel #2
0
 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);
 }