Advanced AJAX Product Filters - Version 1.3.0.2

Version Description

  • Enhancement - Features tab added
  • Fix - Font Awesome 5 on some themes
  • Fix - Customizer do not save WooCommerce settings
  • Fix - Hook to add filtering on some theme
Download this release

Release Info

Developer RazyRx
Plugin Icon wp plugin Advanced AJAX Product Filters
Version 1.3.0.2
Comparing to
See all releases

Code changes from version 1.3.0.1 to 1.3.0.2

assets/assets/screenshot-1.png DELETED
Binary file
assets/assets/screenshot-2.png DELETED
Binary file
assets/assets/screenshot-3.png DELETED
Binary file
assets/screenshot-1.png DELETED
Binary file
assets/screenshot-2.png DELETED
Binary file
assets/screenshot-3.png DELETED
Binary file
berocket/framework.php CHANGED
@@ -240,10 +240,8 @@ if( ! class_exists( 'BeRocket_Framework' ) ) {
240
  public function init() {
241
  $global_option = $this->get_global_option();
242
  wp_enqueue_script( "jquery" );
243
- wp_register_style( 'font-awesome', plugins_url( 'berocket/css/font-awesome.min.css', $this->cc->info[ 'plugin_file' ] ) );
244
- wp_register_style( 'font-awesome-5', plugins_url( 'berocket/css/fontawesome5.min.css', $this->cc->info[ 'plugin_file' ] ) );
245
- wp_register_style( 'font-awesome-5-compat', plugins_url( 'berocket/css/fontawesome4-compat.min.css', $this->cc->info[ 'plugin_file' ] ) );
246
  if( is_admin() ) {
 
247
  wp_enqueue_style( 'font-awesome' );
248
  } elseif( ! empty($this->framework_data['fontawesome_frontend']) ) {
249
  $this->enqueue_fontawesome();
@@ -273,20 +271,18 @@ if( ! class_exists( 'BeRocket_Framework' ) ) {
273
  }
274
 
275
  public function enqueue_fontawesome($force = false) {
276
- if( ! wp_style_is('font-awesome-5-compat', 'registered') ) {
277
- wp_register_style( 'font-awesome', plugins_url( 'berocket/css/font-awesome.min.css', $this->cc->info[ 'plugin_file' ] ) );
278
- wp_register_style( 'font-awesome-5', plugins_url( 'berocket/css/fontawesome5.min.css', $this->cc->info[ 'plugin_file' ] ) );
279
- wp_register_style( 'font-awesome-5-compat', plugins_url( 'berocket/css/fontawesome4-compat.min.css', $this->cc->info[ 'plugin_file' ] ) );
280
- }
281
  $global_option = $this->get_global_option();
282
  if( empty($global_option['fontawesome_frontend_disable']) ) {
283
  if( br_get_value_from_array($global_option, 'fontawesome_frontend_version') == 'fontawesome5' ) {
 
284
  wp_enqueue_style( 'font-awesome-5' );
285
  } else {
 
286
  wp_enqueue_style( 'font-awesome' );
287
  }
288
  } else {
289
  if( br_get_value_from_array($global_option, 'fontawesome_frontend_version') == 'fontawesome5' ) {
 
290
  wp_enqueue_style( 'font-awesome-5-compat' );
291
  }
292
  }
@@ -915,5 +911,17 @@ if( ! class_exists( 'BeRocket_Framework' ) ) {
915
  }
916
  return $settings_page;
917
  }
 
 
 
 
 
 
 
 
 
 
 
 
918
  }
919
  }
240
  public function init() {
241
  $global_option = $this->get_global_option();
242
  wp_enqueue_script( "jquery" );
 
 
 
243
  if( is_admin() ) {
244
+ self::register_font_awesome();
245
  wp_enqueue_style( 'font-awesome' );
246
  } elseif( ! empty($this->framework_data['fontawesome_frontend']) ) {
247
  $this->enqueue_fontawesome();
271
  }
272
 
273
  public function enqueue_fontawesome($force = false) {
 
 
 
 
 
274
  $global_option = $this->get_global_option();
275
  if( empty($global_option['fontawesome_frontend_disable']) ) {
276
  if( br_get_value_from_array($global_option, 'fontawesome_frontend_version') == 'fontawesome5' ) {
277
+ self::register_font_awesome('fa5');
278
  wp_enqueue_style( 'font-awesome-5' );
279
  } else {
280
+ self::register_font_awesome('fa4');
281
  wp_enqueue_style( 'font-awesome' );
282
  }
283
  } else {
284
  if( br_get_value_from_array($global_option, 'fontawesome_frontend_version') == 'fontawesome5' ) {
285
+ self::register_font_awesome('fa5c');
286
  wp_enqueue_style( 'font-awesome-5-compat' );
287
  }
288
  }
911
  }
912
  return $settings_page;
913
  }
914
+
915
+ public static function register_font_awesome($type = 'all') {
916
+ if( $type == 'all' || $type == 'fa4' ) {
917
+ wp_register_style( 'font-awesome', plugins_url( 'css/font-awesome.min.css', __FILE__ ) );
918
+ }
919
+ if( $type == 'all' || $type == 'fa5' ) {
920
+ wp_register_style( 'font-awesome-5', plugins_url( 'css/fontawesome5.min.css', __FILE__ ) );
921
+ }
922
+ if( $type == 'all' || $type == 'fa5c' ) {
923
+ wp_register_style( 'font-awesome-5-compat', plugins_url( 'css/fontawesome4-compat.min.css', __FILE__ ) );
924
+ }
925
+ }
926
  }
927
  }
includes/addons/woocommerce-variation.php CHANGED
@@ -23,7 +23,10 @@ class BeRocket_AAPF_compat_woocommerce_variation {
23
  if( is_array($post_not_in) && count($post_not_in) ) {
24
  $post__not_in = $query->get('post__not_in');
25
  $post__not_in = array_merge($post__not_in, $post_not_in);
 
 
26
  $query->set('post__not_in', $post__not_in);
 
27
  }
28
  return $query;
29
  }
23
  if( is_array($post_not_in) && count($post_not_in) ) {
24
  $post__not_in = $query->get('post__not_in');
25
  $post__not_in = array_merge($post__not_in, $post_not_in);
26
+ $post__in = $query->get('post__in');
27
+ $post__in = array_diff($post__in, $post__not_in);
28
  $query->set('post__not_in', $post__not_in);
29
+ $query->set('post__in', $post__in);
30
  }
31
  return $query;
32
  }
includes/free.php ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class BeRocket_AAPF_Free extends BeRocket_plugin_variations {
3
+ public $plugin_name = 'ajax_filters';
4
+ public $version_number = 0;
5
+ public function __construct() {
6
+ parent::__construct();
7
+ add_filter('brfr_ajax_filters_section_feature', array($this, 'section_feature'));
8
+ }
9
+ public function settings_page($data) {
10
+ $data['Features'] = array(
11
+ 'section_feature' => array(
12
+ "section" => "section_feature",
13
+ "value" => "",
14
+ )
15
+ );
16
+ return $data;
17
+ }
18
+ public function settings_tabs($data) {
19
+ $data = berocket_insert_to_array(
20
+ $data,
21
+ 'JavaScript/CSS',
22
+ array(
23
+ 'Features' => array(
24
+ 'icon' => 'info',
25
+ ),
26
+ )
27
+ );
28
+ return $data;
29
+ }
30
+ public function section_feature ($html) {
31
+ ob_start();
32
+ include_once(AAPF_TEMPLATE_PATH.'free/feature.php');
33
+ $html = ob_get_clean();
34
+ return $html;
35
+ }
36
+ }
37
+ new BeRocket_AAPF_Free();
includes/widget.php CHANGED
@@ -1538,23 +1538,25 @@ if( BeRocket_AAPF::$debug_mode ) {
1538
  }
1539
  }
1540
  }
1541
- if( ! empty($post__in) ) {
1542
- $query['where'] .= " AND {$wpdb->posts}.ID IN (\"" . implode('","', $post__in) . "\")";
1543
- }
1544
- if( ! empty($post__not_in) ) {
1545
- $query['where'] .= " AND {$wpdb->posts}.ID IN (\"" . implode('","', $post__not_in) . "\")";
1546
- }
1547
  if( $count_filtering ) {
1548
  $query['where'] .= $old_join_posts;
1549
  }
1550
  $query = apply_filters( 'woocommerce_get_filtered_term_product_counts_query', $query );
1551
  $on_sale = array_merge( array( 0 ), wc_get_product_ids_on_sale() );
 
1552
  $query_sale = $query;
 
 
 
 
 
 
 
 
 
1553
  $query_sale['where'] .= " AND {$wpdb->posts}.ID IN (".implode(',', $on_sale).") ";
 
1554
  $query_sale = implode( ' ', $query_sale );
1555
- if( BeRocket_AAPF::$debug_mode ) {
1556
- $term_recount_log['query_sale'] = $query_sale;
1557
- }
1558
  $results = $wpdb->get_results( $query_sale );
1559
  foreach($input_terms as &$res_count) {
1560
  if( $res_count->term_id == 1 ) {
@@ -1565,11 +1567,10 @@ if( BeRocket_AAPF::$debug_mode ) {
1565
  }
1566
  }
1567
  }
1568
- $query_not_sale = $query;
1569
- $query_not_sale['where'] .= " AND {$wpdb->posts}.ID NOT IN (".implode(',', $on_sale).") ";;
1570
  $query_not_sale = implode( ' ', $query_not_sale );
1571
  if( BeRocket_AAPF::$debug_mode ) {
1572
  $term_recount_log['query_not_sale'] = $query_not_sale;
 
1573
  }
1574
  $results = $wpdb->get_results( $query_not_sale );
1575
  foreach($input_terms as &$res_count) {
1538
  }
1539
  }
1540
  }
 
 
 
 
 
 
1541
  if( $count_filtering ) {
1542
  $query['where'] .= $old_join_posts;
1543
  }
1544
  $query = apply_filters( 'woocommerce_get_filtered_term_product_counts_query', $query );
1545
  $on_sale = array_merge( array( 0 ), wc_get_product_ids_on_sale() );
1546
+ $not_on_sale = $on_sale;
1547
  $query_sale = $query;
1548
+ $query_not_sale = $query;
1549
+ if( ! empty($post__in) ) {
1550
+ $on_sale = array_intersect($on_sale, $post__in);
1551
+ $query_not_sale['where'] .= " AND {$wpdb->posts}.ID IN (\"" . implode('","', $post__in) . "\")";
1552
+ }
1553
+ if( ! empty($post__not_in) ) {
1554
+ $query_sale['where'] .= " AND {$wpdb->posts}.ID NOT IN (\"" . implode('","', $post__not_in) . "\")";
1555
+ $not_on_sale = array_merge($not_on_sale, $post__not_in);
1556
+ }
1557
  $query_sale['where'] .= " AND {$wpdb->posts}.ID IN (".implode(',', $on_sale).") ";
1558
+ $query_not_sale['where'] .= " AND {$wpdb->posts}.ID NOT IN (".implode(',', $not_on_sale).") ";
1559
  $query_sale = implode( ' ', $query_sale );
 
 
 
1560
  $results = $wpdb->get_results( $query_sale );
1561
  foreach($input_terms as &$res_count) {
1562
  if( $res_count->term_id == 1 ) {
1567
  }
1568
  }
1569
  }
 
 
1570
  $query_not_sale = implode( ' ', $query_not_sale );
1571
  if( BeRocket_AAPF::$debug_mode ) {
1572
  $term_recount_log['query_not_sale'] = $query_not_sale;
1573
+ $term_recount_log['query_sale'] = $query_sale;
1574
  }
1575
  $results = $wpdb->get_results( $query_not_sale );
1576
  foreach($input_terms as &$res_count) {
main.php CHANGED
@@ -1134,7 +1134,9 @@ jQuery(document).on('change', '.br_selected_area_show', br_selected_area_show);
1134
  wp_die();
1135
  }
1136
  function wp_hook() {
1137
- add_filter('loop_shop_columns', array( $this, 'loop_columns' ), 999 );
 
 
1138
  }
1139
  public function replace_deprecated_with_new() {
1140
  require_once dirname( __FILE__ ) . '/fixes/replace_widgets.php';
@@ -1412,7 +1414,7 @@ jQuery(document).on('change', '.br_selected_area_show', br_selected_area_show);
1412
  return ob_get_clean();
1413
  }
1414
  public function woocommerce_shortcode_products_query( $query_vars, $atts = array(), $name = 'products' ) {
1415
- if( (! is_shop() && ! is_product_taxonomy() && ! is_product_category() && ! is_product_tag()) || ! empty($atts['berocket_aapf']) ) {
1416
  $query_vars = $this->woocommerce_filter_query_vars($query_vars, $atts, $name);
1417
  }
1418
  return $query_vars;
@@ -1494,6 +1496,7 @@ jQuery(document).on('change', '.br_selected_area_show', br_selected_area_show);
1494
  } else {
1495
  $is_wc_main_query = $query->is_main_query();
1496
  }
 
1497
  if ( ( ( ! is_admin() && $is_wc_main_query ) || $is_shortcode ) && ( apply_filters( 'berocket_aapf_is_filtered_page_check', ! empty($_GET['filters']), 'apply_user_price', $query ) ) ) {
1498
  br_aapf_args_converter( $query );
1499
  if ( ! empty($_POST['price']) ) {
@@ -1524,6 +1527,7 @@ jQuery(document).on('change', '.br_selected_area_show', br_selected_area_show);
1524
  } else {
1525
  $is_wc_main_query = $query->is_main_query();
1526
  }
 
1527
  if( apply_filters( 'berocket_aapf_is_filtered_page_check', ! empty($_GET['filters']), 'apply_user_filters', $query ) ) {
1528
  br_aapf_args_converter( $query );
1529
  }
1134
  wp_die();
1135
  }
1136
  function wp_hook() {
1137
+ if( empty($_POST['action']) || $_POST['action'] != 'customize_save' ) {
1138
+ add_filter('loop_shop_columns', array( $this, 'loop_columns' ), 999 );
1139
+ }
1140
  }
1141
  public function replace_deprecated_with_new() {
1142
  require_once dirname( __FILE__ ) . '/fixes/replace_widgets.php';
1414
  return ob_get_clean();
1415
  }
1416
  public function woocommerce_shortcode_products_query( $query_vars, $atts = array(), $name = 'products' ) {
1417
+ if( apply_filters('berocket_aapf_wcshortcode_is_filtering', ( (! is_shop() && ! is_product_taxonomy() && ! is_product_category() && ! is_product_tag()) || ! empty($atts['berocket_aapf']) ), $query_vars, $atts, $name ) ) {
1418
  $query_vars = $this->woocommerce_filter_query_vars($query_vars, $atts, $name);
1419
  }
1420
  return $query_vars;
1496
  } else {
1497
  $is_wc_main_query = $query->is_main_query();
1498
  }
1499
+ $is_wc_main_query = apply_filters('berocket_aapf_check_is_wc_main_query', $is_wc_main_query, $query, $is_shortcode);
1500
  if ( ( ( ! is_admin() && $is_wc_main_query ) || $is_shortcode ) && ( apply_filters( 'berocket_aapf_is_filtered_page_check', ! empty($_GET['filters']), 'apply_user_price', $query ) ) ) {
1501
  br_aapf_args_converter( $query );
1502
  if ( ! empty($_POST['price']) ) {
1527
  } else {
1528
  $is_wc_main_query = $query->is_main_query();
1529
  }
1530
+ $is_wc_main_query = apply_filters('berocket_aapf_check_is_wc_main_query', $is_wc_main_query, $query, $is_shortcode);
1531
  if( apply_filters( 'berocket_aapf_is_filtered_page_check', ! empty($_GET['filters']), 'apply_user_filters', $query ) ) {
1532
  br_aapf_args_converter( $query );
1533
  }
readme.txt CHANGED
@@ -5,7 +5,7 @@ Donate link: http://berocket.com/product/woocommerce-ajax-products-filter
5
  Tags: filters, product filters, ajax product filters, ajax filter, ajax filter widget, color filter, size filter, product onsale filter, product preview, product category filter, product reset filter, product sort by filter, stock filter, product tag filter, price range filter, price box filter, advanced product filters, woocommerce filters, woocommerce product filters, woocommerce products filter, woocommerce ajax product filters, widget, plugin, woocommerce item filters, filters plugin, ajax filters plugin, filter woocommerce products, filter woocommerce products plugin, wc filters, wc filters products, wc products filters, wc ajax products filters, wc product filters, wc advanced product filters, woocommerce layered nav, woocommerce layered navigation, ajax filtered nav, ajax filtered navigation, price filter, ajax price filter, woocommerce product sorting, sidebar filter, sidebar ajax filter, taxonomy filter, category filter, attribute filter, attributes filter, woocommerce product sort, ajax products filter plugin for woocommerce, rocket, berocket, berocket woocommerce ajax products filter
6
  Requires at least: 4.0
7
  Tested up to: 5.0.3
8
- Stable tag: 1.3.0.1
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -187,6 +187,12 @@ You can try this plugin's admin side [here](http://berocket.com/product/woocomme
187
 
188
  == Changelog ==
189
 
 
 
 
 
 
 
190
  = 1.3.0.1 =
191
  * Enhancement - Category condition in Filters ans Groups
192
  * Fix - Replace widget with limitation by Categories
5
  Tags: filters, product filters, ajax product filters, ajax filter, ajax filter widget, color filter, size filter, product onsale filter, product preview, product category filter, product reset filter, product sort by filter, stock filter, product tag filter, price range filter, price box filter, advanced product filters, woocommerce filters, woocommerce product filters, woocommerce products filter, woocommerce ajax product filters, widget, plugin, woocommerce item filters, filters plugin, ajax filters plugin, filter woocommerce products, filter woocommerce products plugin, wc filters, wc filters products, wc products filters, wc ajax products filters, wc product filters, wc advanced product filters, woocommerce layered nav, woocommerce layered navigation, ajax filtered nav, ajax filtered navigation, price filter, ajax price filter, woocommerce product sorting, sidebar filter, sidebar ajax filter, taxonomy filter, category filter, attribute filter, attributes filter, woocommerce product sort, ajax products filter plugin for woocommerce, rocket, berocket, berocket woocommerce ajax products filter
6
  Requires at least: 4.0
7
  Tested up to: 5.0.3
8
+ Stable tag: 1.3.0.2
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
187
 
188
  == Changelog ==
189
 
190
+ = 1.3.0.2 =
191
+ * Enhancement - Features tab added
192
+ * Fix - Font Awesome 5 on some themes
193
+ * Fix - Customizer do not save WooCommerce settings
194
+ * Fix - Hook to add filtering on some theme
195
+
196
  = 1.3.0.1 =
197
  * Enhancement - Category condition in Filters ans Groups
198
  * Fix - Replace widget with limitation by Categories
templates/free/feature.php ADDED
@@ -0,0 +1,146 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="row berocket_aapf_features">
2
+ <div class="col-md-6 col-xs-12">
3
+ <h4>Choose best layout for your filter</h4>
4
+
5
+ <h5>Our WooCommerce AJAX Products Filter offers several layouts including slider, image and color</h5>
6
+
7
+ <div class="demo-site"><a href="http://woocommerce-products-filter.berocket.com/shop/" target="_blank">[ demo site ]</a></div>
8
+ <img alt="Choose best layout for your filter" src="https://berocket.com/images/features/filters/filters-types.jpg" /></div>
9
+
10
+ <div class="col-md-6 col-xs-12">
11
+ <h4>Pagination and Order without page reloading</h4>
12
+
13
+ <h5>Users will get next page loaded ordered by their preferences and without page reloading</h5>
14
+
15
+ <div class="demo-site"><a href="http://woocommerce-products-filter.berocket.com/shop/" target="_blank">[ demo site ]</a></div>
16
+ <img alt="Pagination and Order without page reloading" src="https://berocket.com/images/features/filters/ajax_order_nav.jpg" /></div>
17
+ </div>
18
+
19
+ <div>&nbsp;</div>
20
+
21
+ <div class="row berocket_aapf_features">
22
+ <div class="col-md-6 col-xs-12">
23
+ <h4>Show filters above products</h4>
24
+
25
+ <h5>Need more space for the products? Say no to sidebars</h5>
26
+
27
+ <div class="demo-site">
28
+ <a href="http://woocommerce-products-filter.berocket.com/product-category/tshirts/" target="_blank">[ demo site ]</a>
29
+ </div>
30
+ <img alt="Show filters above products" src="https://berocket.com/images/features/filters/above_products.jpg" />
31
+ </div>
32
+
33
+ <div>
34
+ <h4>SEO friendly urls</h4>
35
+
36
+ <h5>Use Nice URLs with canonicalization and slugs instead of IDs</h5>
37
+
38
+ <div class="demo-site">
39
+ <a href="" target="_blank">[ demo site ]</a>
40
+ </div>
41
+
42
+ <div>&nbsp;</div>
43
+ <img alt="SEO friendly urls" src="https://berocket.com/images/features/filters/urls.jpg" />
44
+ </div>
45
+
46
+ <div>
47
+ <h4>Show results before filtering</h4>
48
+
49
+ <h5>Show users what they will get before filters applied. Fast and efficient</h5>
50
+
51
+ <div class="demo-site">
52
+ <a href="http://woocommerce-products-filter.berocket.com/woocommerce-products-filter-demo-4/" target="_blank">[ demo site ]</a>
53
+ </div>
54
+
55
+ <div>&nbsp;</div>
56
+
57
+ <img alt="Show results before filtering" src="https://berocket.com/images/features/filters/before_filter.jpg" />
58
+ </div>
59
+
60
+ <div>
61
+ <h4>Include/Exclude values</h4>
62
+
63
+ <h5>Show only needed values from the attribute or hide few</h5>
64
+
65
+ <div class="demo-site">
66
+ <a href="http://woocommerce-products-filter.berocket.com/woocommerce-products-filter-demo-4/" target="_blank">[ demo site ]</a>
67
+ </div>
68
+ <img alt="Include/Exclude values" src="https://berocket.com/images/features/filters/include_exclude.jpg" />
69
+ </div>
70
+
71
+ <div>
72
+ <h4>Search Box on any page</h4>
73
+
74
+ <h5>Users can pre-fill filters before visiting shop page</h5>
75
+
76
+ <div class="demo-site">
77
+ <a href="http://woocommerce-products-filter.berocket.com/" target="_blank">[ demo site ]</a>
78
+ </div>
79
+ <img alt="Search Box on any page" src="https://berocket.com/images/features/filters/searchbox.jpg" />
80
+ </div>
81
+
82
+ <div>
83
+ <h4>Update filters with user needs</h4>
84
+
85
+ <h5>Hate &quot;No Products!&quot; message? Hide values without products on the go</h5>
86
+
87
+ <div class="demo-site">
88
+ <a href="http://woocommerce-products-filter.berocket.com/shop/" target="_blank">[ demo site ]</a>
89
+ </div>
90
+
91
+ <div>&nbsp;</div>
92
+ <img alt="Update filters with user needs" src="https://berocket.com/images/features/filters/reload.jpg" />
93
+ </div>
94
+
95
+ <div>
96
+ <h4>Brands<br />
97
+ <small>(require our Brands plugin)</small></h4>
98
+
99
+ <h5>Users love brands. Help them find favorite brands faster</h5>
100
+
101
+ <div class="demo-site">
102
+ <a href="http://woocommerce-products-filter.berocket.com/woocommerce-products-filter-demo-5/" target="_blank">[ demo site ]</a>
103
+ </div>
104
+ <img alt="Brands" src="https://berocket.com/images/features/filters/brands.jpg" />
105
+ </div>
106
+
107
+ <div>
108
+ <h4>Price Ranges and Sliders for Attributes</h4>
109
+
110
+ <h5>Love sliders? Use them now for the attributes too!</h5>
111
+
112
+ <div class="demo-site">
113
+ <a href="http://woocommerce-products-filter.berocket.com/woocommerce-products-filter-demo-2/" target="_blank">[ demo site ]</a>
114
+ </div>
115
+ <img alt="Price Ranges and Sliders for Attributes" src="https://berocket.com/images/features/filters/range_slider.jpg" />
116
+ </div>
117
+
118
+
119
+ <div>
120
+ <h4>WPML and Polylang compatibility</h4>
121
+
122
+ <h5>EASILY TRANSLATE THE PLUGIN TO OTHER LANGUAGES WITH THE POWERFUL WPML AND POLYLANG TOOLS</h5>
123
+ <img alt="WPML and Polylang compatibility" src="https://berocket.com/img/docs/wpml_polylang.png" />
124
+ </div>
125
+ </div>
126
+ <style>
127
+ .berocket_aapf_features img {
128
+ max-width: 100%;
129
+ margin:auto;
130
+ display: block;
131
+ }
132
+ .berocket_aapf_features h4,
133
+ .berocket_aapf_features h5,
134
+ .berocket_aapf_features .demo-site {
135
+ text-align: center;
136
+ }
137
+ .berocket_aapf_features h5 {
138
+ font-size: 17px;
139
+ font-weight: 500;
140
+ }
141
+ .berocket_aapf_features h4 {
142
+ font-size: 26px;
143
+ font-weight: 700;
144
+ text-transform: uppercase;
145
+ }
146
+ </style>
templates/free/free/feature.php ADDED
@@ -0,0 +1,146 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="row berocket_aapf_features">
2
+ <div class="col-md-6 col-xs-12">
3
+ <h4>Choose best layout for your filter</h4>
4
+
5
+ <h5>Our WooCommerce AJAX Products Filter offers several layouts including slider, image and color</h5>
6
+
7
+ <div class="demo-site"><a href="http://woocommerce-products-filter.berocket.com/shop/" target="_blank">[ demo site ]</a></div>
8
+ <img alt="Choose best layout for your filter" src="https://berocket.com/images/features/filters/filters-types.jpg" /></div>
9
+
10
+ <div class="col-md-6 col-xs-12">
11
+ <h4>Pagination and Order without page reloading</h4>
12
+
13
+ <h5>Users will get next page loaded ordered by their preferences and without page reloading</h5>
14
+
15
+ <div class="demo-site"><a href="http://woocommerce-products-filter.berocket.com/shop/" target="_blank">[ demo site ]</a></div>
16
+ <img alt="Pagination and Order without page reloading" src="https://berocket.com/images/features/filters/ajax_order_nav.jpg" /></div>
17
+ </div>
18
+
19
+ <div>&nbsp;</div>
20
+
21
+ <div class="row berocket_aapf_features">
22
+ <div class="col-md-6 col-xs-12">
23
+ <h4>Show filters above products</h4>
24
+
25
+ <h5>Need more space for the products? Say no to sidebars</h5>
26
+
27
+ <div class="demo-site">
28
+ <a href="http://woocommerce-products-filter.berocket.com/product-category/tshirts/" target="_blank">[ demo site ]</a>
29
+ </div>
30
+ <img alt="Show filters above products" src="https://berocket.com/images/features/filters/above_products.jpg" />
31
+ </div>
32
+
33
+ <div>
34
+ <h4>SEO friendly urls</h4>
35
+
36
+ <h5>Use Nice URLs with canonicalization and slugs instead of IDs</h5>
37
+
38
+ <div class="demo-site">
39
+ <a href="" target="_blank">[ demo site ]</a>
40
+ </div>
41
+
42
+ <div>&nbsp;</div>
43
+ <img alt="SEO friendly urls" src="https://berocket.com/images/features/filters/urls.jpg" />
44
+ </div>
45
+
46
+ <div>
47
+ <h4>Show results before filtering</h4>
48
+
49
+ <h5>Show users what they will get before filters applied. Fast and efficient</h5>
50
+
51
+ <div class="demo-site">
52
+ <a href="http://woocommerce-products-filter.berocket.com/woocommerce-products-filter-demo-4/" target="_blank">[ demo site ]</a>
53
+ </div>
54
+
55
+ <div>&nbsp;</div>
56
+
57
+ <img alt="Show results before filtering" src="https://berocket.com/images/features/filters/before_filter.jpg" />
58
+ </div>
59
+
60
+ <div>
61
+ <h4>Include/Exclude values</h4>
62
+
63
+ <h5>Show only needed values from the attribute or hide few</h5>
64
+
65
+ <div class="demo-site">
66
+ <a href="http://woocommerce-products-filter.berocket.com/woocommerce-products-filter-demo-4/" target="_blank">[ demo site ]</a>
67
+ </div>
68
+ <img alt="Include/Exclude values" src="https://berocket.com/images/features/filters/include_exclude.jpg" />
69
+ </div>
70
+
71
+ <div>
72
+ <h4>Search Box on any page</h4>
73
+
74
+ <h5>Users can pre-fill filters before visiting shop page</h5>
75
+
76
+ <div class="demo-site">
77
+ <a href="http://woocommerce-products-filter.berocket.com/" target="_blank">[ demo site ]</a>
78
+ </div>
79
+ <img alt="Search Box on any page" src="https://berocket.com/images/features/filters/searchbox.jpg" />
80
+ </div>
81
+
82
+ <div>
83
+ <h4>Update filters with user needs</h4>
84
+
85
+ <h5>Hate &quot;No Products!&quot; message? Hide values without products on the go</h5>
86
+
87
+ <div class="demo-site">
88
+ <a href="http://woocommerce-products-filter.berocket.com/shop/" target="_blank">[ demo site ]</a>
89
+ </div>
90
+
91
+ <div>&nbsp;</div>
92
+ <img alt="Update filters with user needs" src="https://berocket.com/images/features/filters/reload.jpg" />
93
+ </div>
94
+
95
+ <div>
96
+ <h4>Brands<br />
97
+ <small>(require our Brands plugin)</small></h4>
98
+
99
+ <h5>Users love brands. Help them find favorite brands faster</h5>
100
+
101
+ <div class="demo-site">
102
+ <a href="http://woocommerce-products-filter.berocket.com/woocommerce-products-filter-demo-5/" target="_blank">[ demo site ]</a>
103
+ </div>
104
+ <img alt="Brands" src="https://berocket.com/images/features/filters/brands.jpg" />
105
+ </div>
106
+
107
+ <div>
108
+ <h4>Price Ranges and Sliders for Attributes</h4>
109
+
110
+ <h5>Love sliders? Use them now for the attributes too!</h5>
111
+
112
+ <div class="demo-site">
113
+ <a href="http://woocommerce-products-filter.berocket.com/woocommerce-products-filter-demo-2/" target="_blank">[ demo site ]</a>
114
+ </div>
115
+ <img alt="Price Ranges and Sliders for Attributes" src="https://berocket.com/images/features/filters/range_slider.jpg" />
116
+ </div>
117
+
118
+
119
+ <div>
120
+ <h4>WPML and Polylang compatibility</h4>
121
+
122
+ <h5>EASILY TRANSLATE THE PLUGIN TO OTHER LANGUAGES WITH THE POWERFUL WPML AND POLYLANG TOOLS</h5>
123
+ <img alt="WPML and Polylang compatibility" src="https://berocket.com/img/docs/wpml_polylang.png" />
124
+ </div>
125
+ </div>
126
+ <style>
127
+ .berocket_aapf_features img {
128
+ max-width: 100%;
129
+ margin:auto;
130
+ display: block;
131
+ }
132
+ .berocket_aapf_features h4,
133
+ .berocket_aapf_features h5,
134
+ .berocket_aapf_features .demo-site {
135
+ text-align: center;
136
+ }
137
+ .berocket_aapf_features h5 {
138
+ font-size: 17px;
139
+ font-weight: 500;
140
+ }
141
+ .berocket_aapf_features h4 {
142
+ font-size: 26px;
143
+ font-weight: 700;
144
+ text-transform: uppercase;
145
+ }
146
+ </style>
woocommerce-filters.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Advanced AJAX Product Filters for WooCommerce
4
  * Plugin URI: https://wordpress.org/plugins/woocommerce-ajax-filters/
5
  * Description: Unlimited AJAX products filters to make your shop perfect
6
- * Version: 1.3.0.1
7
  * Author: BeRocket
8
  * Requires at least: 4.0
9
  * Author URI: http://berocket.com
@@ -13,6 +13,6 @@
13
  * Domain Path: /languages/
14
  * WC tested up to: 3.5.3
15
  */
16
- define( "BeRocket_AJAX_filters_version", '1.3.0.1' );
17
  define( "BeRocket_AJAX_filters_file", __FILE__ );
18
  include_once('main.php');
3
  * Plugin Name: Advanced AJAX Product Filters for WooCommerce
4
  * Plugin URI: https://wordpress.org/plugins/woocommerce-ajax-filters/
5
  * Description: Unlimited AJAX products filters to make your shop perfect
6
+ * Version: 1.3.0.2
7
  * Author: BeRocket
8
  * Requires at least: 4.0
9
  * Author URI: http://berocket.com
13
  * Domain Path: /languages/
14
  * WC tested up to: 3.5.3
15
  */
16
+ define( "BeRocket_AJAX_filters_version", '1.3.0.2' );
17
  define( "BeRocket_AJAX_filters_file", __FILE__ );
18
  include_once('main.php');