Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function catalog_custom_filter()
- {
- global $wp_query;
- function reduce_non_numeric( &$value ){
- $value = preg_replace('~[^\d]~', '', $value);
- }
- $product_category_field = $manufactory_field = $styles_field = 'id';
- global $url_path, $url_query;
- $url_query = array();
- if ( isset($_REQUEST[STYLE_TAX]) AND $_REQUEST[STYLE_TAX] )
- {
- $styles = explode( ',', $_REQUEST[STYLE_TAX]);
- array_walk($styles, 'reduce_non_numeric');
- $url_query[] = STYLE_TAX . '=' . ( implode($styles, ',') );
- $styles_field = 'id';
- }
- elseif ( isset( $wp_query->query[STYLE_TAX] ) AND $wp_query->query[STYLE_TAX] )
- {
- $styles = $wp_query->query[STYLE_TAX];
- $styles_field = 'slug';
- $url_path = STYLE_TAX . '/' . $wp_query->query[STYLE_TAX];
- }
- else
- {
- $styles = array();
- }
- if ( isset($_REQUEST[MANUFACTORY_TAX]) AND $_REQUEST[MANUFACTORY_TAX] )
- {
- $manufactory = (array)$_REQUEST[MANUFACTORY_TAX];
- array_walk($manufactory, 'reduce_non_numeric');
- $url_query[] = MANUFACTORY_TAX . '=' . ( implode($manufactory, ',') );
- $manufactory_field = 'id';
- }
- elseif ( isset( $wp_query->query[MANUFACTORY_TAX] ) AND $wp_query->query[MANUFACTORY_TAX] )
- {
- $manufactory = $wp_query->query[MANUFACTORY_TAX];
- $manufactory_field = 'slug';
- $url_path = MANUFACTORY_TAX . '/' . $wp_query->query[MANUFACTORY_TAX];
- }
- else
- {
- $manufactory = array();
- }
- if ( isset($_REQUEST[PRODUCT_CAT_TAX]) AND $_REQUEST[PRODUCT_CAT_TAX] )
- {
- $product_category = $_REQUEST[PRODUCT_CAT_TAX];
- $product_category = preg_replace('~[^\d\,]~', '', $product_category);
- $url_query[] = PRODUCT_CAT_TAX . '=' . ( $product_category );
- $product_category_field = 'id';
- }
- elseif ( isset( $wp_query->query[PRODUCT_CAT_TAX] ) AND $wp_query->query[PRODUCT_CAT_TAX] )
- {
- $product_category = $wp_query->query[PRODUCT_CAT_TAX];
- $product_category_field = 'slug';
- $url_path = PRODUCT_CAT_TAX . '/' . $wp_query->query[PRODUCT_CAT_TAX];
- }
- else
- {
- $product_category = 0; //Если категорий нет, то добавим 0, а затем будем исключать его через NOT IN, чтобы вывести все категории
- }
- $product_category = explode(',', $product_category);
- if ( $styles )
- $query_param['tax_query'][] = array(
- 'taxonomy' => STYLE_TAX,
- 'field' => $styles_field,
- 'terms' => $styles,
- 'operator' => 'IN'
- );
- if ( $manufactory )
- $query_param['tax_query'][] = array(
- 'taxonomy' => MANUFACTORY_TAX,
- 'field' => $manufactory_field,
- 'terms' => $manufactory,
- );
- $query_param['tax_query'][] = array(
- 'taxonomy' => PRODUCT_CAT_TAX,
- 'field' => $product_category_field,
- 'terms' => $product_category,
- 'operator' => $product_category[0] ? 'IN' : 'NOT IN',
- );
- if ( is_array($query_param['tax_query']) AND count($query_param['tax_query']) > 1 )
- $query_param['tax_query'] = array( 'relation' => 'AND' ) + $query_param['tax_query'];
- if ( isset($_REQUEST['posts_per_page']) )
- reduce_non_numeric($_REQUEST['posts_per_page']);
- $query_param['posts_per_page'] = isset($_REQUEST['posts_per_page']) ? $_REQUEST['posts_per_page'] : get_option('posts_per_page');
- if ( isset($_REQUEST['paged']) )
- reduce_non_numeric($_REQUEST['paged']);
- $query_param['paged'] = isset($_REQUEST['paged']) ? $_REQUEST['paged'] : get_query_var('paged');
- $query_param['post_type'] = GOODS_POST_TYPE;
- $query_param['post_status'] = 'publish';
- if ( isset($_REQUEST['pricefrom']) AND $_REQUEST['pricefrom'] )
- $cost[] = $_REQUEST['pricefrom'];
- else
- $cost[] = 0;
- if ( isset($_REQUEST['priceto']) AND $_REQUEST['priceto'] )
- $cost[] = $_REQUEST['priceto'];
- else
- $cost[] = 50000;
- array_walk($cost, 'reduce_non_numeric');
- $url_query[] = 'pricefrom=' . $cost[0];
- $url_query[] = 'priceto=' . $cost[1];
- if( USE_COST_FILTER === TRUE )
- $query_param['meta_query'][] = array(
- 'key' => 'cost',
- 'value' => $cost,
- 'compare' => 'BETWEEN'
- );
- if ( isset($_REQUEST['search']) AND $_REQUEST['search'] )
- {
- $query_param = array( 's' => urldecode($_REQUEST['search']), 'post_type' => GOODS_POST_TYPE );
- }
- global $query;
- $query = new WP_Query($query_param);
- //add_filter( 'get_pagenum_link', 'products_pagenum_link');
- include 'catalog-items-template.php';
- if ( $_REQUEST['action'] == 'catalog-custom-filter' )
- die();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement