Advertisement
Guest User

Untitled

a guest
Oct 13th, 2012
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.12 KB | None | 0 0
  1. function catalog_custom_filter()
  2. {
  3. global $wp_query;
  4.  
  5. function reduce_non_numeric( &$value ){
  6. $value = preg_replace('~[^\d]~', '', $value);
  7. }
  8.  
  9. $product_category_field = $manufactory_field = $styles_field = 'id';
  10.  
  11. global $url_path, $url_query;
  12. $url_query = array();
  13.  
  14. if ( isset($_REQUEST[STYLE_TAX]) AND $_REQUEST[STYLE_TAX] )
  15. {
  16. $styles = explode( ',', $_REQUEST[STYLE_TAX]);
  17. array_walk($styles, 'reduce_non_numeric');
  18. $url_query[] = STYLE_TAX . '=' . ( implode($styles, ',') );
  19. $styles_field = 'id';
  20. }
  21. elseif ( isset( $wp_query->query[STYLE_TAX] ) AND $wp_query->query[STYLE_TAX] )
  22. {
  23. $styles = $wp_query->query[STYLE_TAX];
  24. $styles_field = 'slug';
  25. $url_path = STYLE_TAX . '/' . $wp_query->query[STYLE_TAX];
  26. }
  27. else
  28. {
  29. $styles = array();
  30. }
  31.  
  32. if ( isset($_REQUEST[MANUFACTORY_TAX]) AND $_REQUEST[MANUFACTORY_TAX] )
  33. {
  34. $manufactory = (array)$_REQUEST[MANUFACTORY_TAX];
  35. array_walk($manufactory, 'reduce_non_numeric');
  36. $url_query[] = MANUFACTORY_TAX . '=' . ( implode($manufactory, ',') );
  37. $manufactory_field = 'id';
  38. }
  39. elseif ( isset( $wp_query->query[MANUFACTORY_TAX] ) AND $wp_query->query[MANUFACTORY_TAX] )
  40. {
  41. $manufactory = $wp_query->query[MANUFACTORY_TAX];
  42. $manufactory_field = 'slug';
  43. $url_path = MANUFACTORY_TAX . '/' . $wp_query->query[MANUFACTORY_TAX];
  44. }
  45. else
  46. {
  47. $manufactory = array();
  48. }
  49.  
  50. if ( isset($_REQUEST[PRODUCT_CAT_TAX]) AND $_REQUEST[PRODUCT_CAT_TAX] )
  51. {
  52. $product_category = $_REQUEST[PRODUCT_CAT_TAX];
  53. $product_category = preg_replace('~[^\d\,]~', '', $product_category);
  54. $url_query[] = PRODUCT_CAT_TAX . '=' . ( $product_category );
  55. $product_category_field = 'id';
  56. }
  57. elseif ( isset( $wp_query->query[PRODUCT_CAT_TAX] ) AND $wp_query->query[PRODUCT_CAT_TAX] )
  58. {
  59. $product_category = $wp_query->query[PRODUCT_CAT_TAX];
  60. $product_category_field = 'slug';
  61. $url_path = PRODUCT_CAT_TAX . '/' . $wp_query->query[PRODUCT_CAT_TAX];
  62. }
  63. else
  64. {
  65. $product_category = 0; //Если категорий нет, то добавим 0, а затем будем исключать его через NOT IN, чтобы вывести все категории
  66. }
  67. $product_category = explode(',', $product_category);
  68.  
  69. if ( $styles )
  70. $query_param['tax_query'][] = array(
  71. 'taxonomy' => STYLE_TAX,
  72. 'field' => $styles_field,
  73. 'terms' => $styles,
  74. 'operator' => 'IN'
  75. );
  76.  
  77. if ( $manufactory )
  78. $query_param['tax_query'][] = array(
  79. 'taxonomy' => MANUFACTORY_TAX,
  80. 'field' => $manufactory_field,
  81. 'terms' => $manufactory,
  82. );
  83.  
  84. $query_param['tax_query'][] = array(
  85. 'taxonomy' => PRODUCT_CAT_TAX,
  86. 'field' => $product_category_field,
  87. 'terms' => $product_category,
  88. 'operator' => $product_category[0] ? 'IN' : 'NOT IN',
  89. );
  90.  
  91. if ( is_array($query_param['tax_query']) AND count($query_param['tax_query']) > 1 )
  92. $query_param['tax_query'] = array( 'relation' => 'AND' ) + $query_param['tax_query'];
  93.  
  94. if ( isset($_REQUEST['posts_per_page']) )
  95. reduce_non_numeric($_REQUEST['posts_per_page']);
  96. $query_param['posts_per_page'] = isset($_REQUEST['posts_per_page']) ? $_REQUEST['posts_per_page'] : get_option('posts_per_page');
  97.  
  98. if ( isset($_REQUEST['paged']) )
  99. reduce_non_numeric($_REQUEST['paged']);
  100. $query_param['paged'] = isset($_REQUEST['paged']) ? $_REQUEST['paged'] : get_query_var('paged');
  101.  
  102. $query_param['post_type'] = GOODS_POST_TYPE;
  103.  
  104. $query_param['post_status'] = 'publish';
  105.  
  106. if ( isset($_REQUEST['pricefrom']) AND $_REQUEST['pricefrom'] )
  107. $cost[] = $_REQUEST['pricefrom'];
  108. else
  109. $cost[] = 0;
  110.  
  111. if ( isset($_REQUEST['priceto']) AND $_REQUEST['priceto'] )
  112. $cost[] = $_REQUEST['priceto'];
  113. else
  114. $cost[] = 50000;
  115.  
  116. array_walk($cost, 'reduce_non_numeric');
  117. $url_query[] = 'pricefrom=' . $cost[0];
  118. $url_query[] = 'priceto=' . $cost[1];
  119.  
  120.  
  121. if( USE_COST_FILTER === TRUE )
  122. $query_param['meta_query'][] = array(
  123. 'key' => 'cost',
  124. 'value' => $cost,
  125. 'compare' => 'BETWEEN'
  126. );
  127.  
  128. if ( isset($_REQUEST['search']) AND $_REQUEST['search'] )
  129. {
  130. $query_param = array( 's' => urldecode($_REQUEST['search']), 'post_type' => GOODS_POST_TYPE );
  131. }
  132.  
  133. global $query;
  134. $query = new WP_Query($query_param);
  135.  
  136. //add_filter( 'get_pagenum_link', 'products_pagenum_link');
  137.  
  138. include 'catalog-items-template.php';
  139.  
  140. if ( $_REQUEST['action'] == 'catalog-custom-filter' )
  141. die();
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement