Advanced Woo Search - Version 1.53

Version Description

  • Fix bug with search results page ordering
  • Add svg loading icon
  • Mark featured products in search results
  • Add aws_search_results_products_ids filter
Download this release

Release Info

Developer Mihail Barinov
Plugin Icon 128x128 Advanced Woo Search
Version 1.53
Comparing to
See all releases

Code changes from version 1.52 to 1.53

advanced-woo-search.php CHANGED
@@ -3,7 +3,7 @@
3
  /*
4
  Plugin Name: Advanced Woo Search
5
  Description: Advance ajax WooCommerce product search.
6
- Version: 1.52
7
  Author: ILLID
8
  Author URI: https://advanced-woo-search.com/
9
  Text Domain: aws
@@ -16,7 +16,7 @@ if ( ! defined( 'ABSPATH' ) ) {
16
  exit;
17
  }
18
 
19
- define( 'AWS_VERSION', '1.52' );
20
 
21
 
22
  define( 'AWS_DIR', dirname( __FILE__ ) );
@@ -165,7 +165,7 @@ final class AWS_Main {
165
  $setting_link = '<a href="' . admin_url('admin.php?page=aws-options') . '">'.__( 'Settings', 'aws' ).'</a>';
166
  array_unshift( $links, $setting_link );
167
 
168
- $premium_link = '<a href="https://advanced-woo-search.com/" target="_blank">'.__( 'Get Premium', 'aws' ).'</a>';
169
  array_unshift( $links, $premium_link );
170
  }
171
 
3
  /*
4
  Plugin Name: Advanced Woo Search
5
  Description: Advance ajax WooCommerce product search.
6
+ Version: 1.53
7
  Author: ILLID
8
  Author URI: https://advanced-woo-search.com/
9
  Text Domain: aws
16
  exit;
17
  }
18
 
19
+ define( 'AWS_VERSION', '1.53' );
20
 
21
 
22
  define( 'AWS_DIR', dirname( __FILE__ ) );
165
  $setting_link = '<a href="' . admin_url('admin.php?page=aws-options') . '">'.__( 'Settings', 'aws' ).'</a>';
166
  array_unshift( $links, $setting_link );
167
 
168
+ $premium_link = '<a href="https://advanced-woo-search.com/?utm_source=plugin&utm_medium=settings-link&utm_campaign=aws-pro-plugin" target="_blank">'.__( 'Get Premium', 'aws' ).'</a>';
169
  array_unshift( $links, $premium_link );
170
  }
171
 
assets/css/common.css CHANGED
@@ -14,23 +14,63 @@
14
  border-radius: 0 !important;
15
  }
16
 
17
- .aws-container .aws-search-form:after {
18
- display: none;
19
- position: absolute;
20
- content: '';
21
- background: url('../img/loader-1.GIF') no-repeat 50% 50%;
22
  width: 20px;
23
  height: 20px;
 
 
 
 
 
24
  right: 10px;
25
  top: 50%;
26
- margin-top: -10px;
27
  z-index: 999;
 
 
 
 
 
 
 
 
 
28
  }
29
 
30
- .aws-container .aws-search-form.aws-processing:after {
31
  display: block;
 
 
 
 
 
32
  }
33
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  .aws-container .aws-search-field {
35
  height: 44px;
36
  width: 100%;
@@ -45,6 +85,10 @@
45
  -webkit-appearance: none;
46
  }
47
 
 
 
 
 
48
  .aws-container .aws-search-field:focus {
49
  background-color: #fff;
50
  }
@@ -154,6 +198,19 @@
154
  color: #21759b;
155
  }
156
 
 
 
 
 
 
 
 
 
 
 
 
 
 
157
  .aws-search-result .aws_result_stock {
158
  display: block;
159
  font-weight: normal;
14
  border-radius: 0 !important;
15
  }
16
 
17
+
18
+ .aws-container .aws-search-form .aws-loader,
19
+ .aws-container .aws-search-form .aws-loader:after {
20
+ border-radius: 50% !important;
 
21
  width: 20px;
22
  height: 20px;
23
+ }
24
+
25
+ .aws-container .aws-search-form .aws-loader {
26
+ position: absolute;
27
+ display: none;
28
  right: 10px;
29
  top: 50%;
 
30
  z-index: 999;
31
+ margin: 0;
32
+ margin-top: -10px;
33
+ font-size: 10px;
34
+ text-indent: -9999em;
35
+ border-top: 3px solid #ededed;
36
+ border-right: 3px solid #ededed;
37
+ border-bottom: 3px solid #ededed;
38
+ border-left: 3px solid #555;
39
+
40
  }
41
 
42
+ .aws-container .aws-search-form.aws-processing .aws-loader {
43
  display: block;
44
+ -webkit-transform: translateZ(0);
45
+ -ms-transform: translateZ(0);
46
+ transform: translateZ(0);
47
+ -webkit-animation: load8 0.7s infinite linear;
48
+ animation: load8 0.7s infinite linear;
49
  }
50
 
51
+ @-webkit-keyframes load8 {
52
+ 0% {
53
+ -webkit-transform: rotate(0deg);
54
+ transform: rotate(0deg);
55
+ }
56
+ 100% {
57
+ -webkit-transform: rotate(360deg);
58
+ transform: rotate(360deg);
59
+ }
60
+ }
61
+ @keyframes load8 {
62
+ 0% {
63
+ -webkit-transform: rotate(0deg);
64
+ transform: rotate(0deg);
65
+ }
66
+ 100% {
67
+ -webkit-transform: rotate(360deg);
68
+ transform: rotate(360deg);
69
+ }
70
+ }
71
+
72
+
73
+
74
  .aws-container .aws-search-field {
75
  height: 44px;
76
  width: 100%;
85
  -webkit-appearance: none;
86
  }
87
 
88
+ .aws-container .aws-search-field::-ms-clear {
89
+ display: none;
90
+ }
91
+
92
  .aws-container .aws-search-field:focus {
93
  background-color: #fff;
94
  }
198
  color: #21759b;
199
  }
200
 
201
+ .aws-search-result .aws_result_featured {
202
+ margin-right: 6px;
203
+ position: relative;
204
+ top: -2px;
205
+ }
206
+
207
+ .aws-search-result .aws_result_featured svg {
208
+ width: 13px;
209
+ height: 13px;
210
+ fill: #fa0;
211
+ vertical-align: bottom;
212
+ }
213
+
214
  .aws-search-result .aws_result_stock {
215
  display: block;
216
  font-weight: normal;
assets/js/common.js CHANGED
@@ -162,8 +162,14 @@
162
  }
163
 
164
  html += '<span class="aws_result_content">';
165
- html += '<span class="aws_result_title">' + result.title + '</span>';
166
-
 
 
 
 
 
 
167
  if ( result.stock_status ) {
168
  var statusClass = result.stock_status.status ? 'in' : 'out';
169
  html += '<span class="aws_result_stock ' + statusClass + '">';
162
  }
163
 
164
  html += '<span class="aws_result_content">';
165
+
166
+ html += '<span class="aws_result_title">';
167
+ if ( result.featured ) {
168
+ html += '<span class="aws_result_featured" title="Featured"><svg version="1.1" viewBox="0 0 20 21" xmlns="http://www.w3.org/2000/svg" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns" xmlns:xlink="http://www.w3.org/1999/xlink"><g fill-rule="evenodd" stroke="none" stroke-width="1"><g transform="translate(-296.000000, -422.000000)"><g transform="translate(296.000000, 422.500000)"><path d="M10,15.273 L16.18,19 L14.545,11.971 L20,7.244 L12.809,6.627 L10,0 L7.191,6.627 L0,7.244 L5.455,11.971 L3.82,19 L10,15.273 Z"/></g></g></g></svg></span>';
169
+ }
170
+ html += result.title;
171
+ html += '</span>';
172
+
173
  if ( result.stock_status ) {
174
  var statusClass = result.stock_status.status ? 'in' : 'out';
175
  html += '<span class="aws_result_stock ' + statusClass + '">';
includes/class-aws-admin.php CHANGED
@@ -81,7 +81,7 @@ class AWS_Admin {
81
 
82
  }
83
 
84
- $tabs_html .= '<a href="https://advanced-woo-search.com/" class="nav-tab premium-tab" target="_blank">' . __( 'Get Premium', 'aws' ) . '</a>';
85
 
86
  $tabs_html = '<h2 class="nav-tab-wrapper woo-nav-tab-wrapper">'.$tabs_html.'</h2>';
87
 
81
 
82
  }
83
 
84
+ $tabs_html .= '<a href="https://advanced-woo-search.com/?utm_source=plugin&utm_medium=settings-tab&utm_campaign=aws-pro-plugin" class="nav-tab premium-tab" target="_blank">' . __( 'Get Premium', 'aws' ) . '</a>';
85
 
86
  $tabs_html = '<h2 class="nav-tab-wrapper woo-nav-tab-wrapper">'.$tabs_html.'</h2>';
87
 
includes/class-aws-markup.php CHANGED
@@ -83,6 +83,8 @@ if ( ! class_exists( 'AWS_Markup' ) ) :
83
  $markup .= '<span aria-label="Clear Search">×</span>';
84
  $markup .= '</div>';
85
 
 
 
86
  $markup .= '</form>';
87
  $markup .= '</div>';
88
 
83
  $markup .= '<span aria-label="Clear Search">×</span>';
84
  $markup .= '</div>';
85
 
86
+ $markup .= '<div class="aws-loader"></div>';
87
+
88
  $markup .= '</form>';
89
  $markup .= '</div>';
90
 
includes/class-aws-order.php CHANGED
@@ -24,7 +24,25 @@ if ( ! class_exists( 'AWS_Order' ) ) :
24
  /**
25
  * Constructor
26
  */
27
- public function __construct( $products, $order_by ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
 
29
  $this->products = $products;
30
  $this->order_by = $order_by;
@@ -41,6 +59,7 @@ if ( ! class_exists( 'AWS_Order' ) ) :
41
  switch( $this->order_by ) {
42
 
43
  case 'price':
 
44
 
45
  if ( isset( $this->products[0]['f_price'] ) ) {
46
  usort( $this->products, array( $this, 'compare_price_asc' ) );
@@ -57,6 +76,7 @@ if ( ! class_exists( 'AWS_Order' ) ) :
57
  break;
58
 
59
  case 'date':
 
60
 
61
  if ( isset( $this->products[0]['post_data'] ) ) {
62
  usort( $this->products, array( $this, 'compare_date' ) );
@@ -64,6 +84,14 @@ if ( ! class_exists( 'AWS_Order' ) ) :
64
 
65
  break;
66
 
 
 
 
 
 
 
 
 
67
  case 'rating':
68
 
69
  if ( isset( $this->products[0]['f_rating'] ) ) {
@@ -73,6 +101,7 @@ if ( ! class_exists( 'AWS_Order' ) ) :
73
  break;
74
 
75
  case 'popularity':
 
76
 
77
  if ( isset( $this->products[0]['f_reviews'] ) ) {
78
  usort( $this->products, array( $this, 'compare_reviews' ) );
@@ -80,6 +109,32 @@ if ( ! class_exists( 'AWS_Order' ) ) :
80
 
81
  break;
82
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
  }
84
 
85
  }
@@ -120,6 +175,18 @@ if ( ! class_exists( 'AWS_Order' ) ) :
120
  return ($a < $b) ? 1 : -1;
121
  }
122
 
 
 
 
 
 
 
 
 
 
 
 
 
123
  /*
124
  * Compare rating
125
  */
@@ -144,6 +211,26 @@ if ( ! class_exists( 'AWS_Order' ) ) :
144
  return ($a < $b) ? 1 : -1;
145
  }
146
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
147
  /*
148
  * Return array of sorted products
149
  */
24
  /**
25
  * Constructor
26
  */
27
+ public function __construct( $products, $query ) {
28
+
29
+ if ( isset( $query->query['orderby'] ) ) {
30
+
31
+ $order_by = $query->query['orderby'];
32
+
33
+ } else {
34
+
35
+ $order_by = $query->query_vars['orderby'];
36
+
37
+ if ( $order_by === 'meta_value_num' ) {
38
+ $order_by = 'price';
39
+ }
40
+
41
+ if ( isset( $query->query_vars['order'] ) ) {
42
+ $order_by = $order_by . '-' . strtolower( $query->query_vars['order'] );
43
+ }
44
+
45
+ }
46
 
47
  $this->products = $products;
48
  $this->order_by = $order_by;
59
  switch( $this->order_by ) {
60
 
61
  case 'price':
62
+ case 'price-asc':
63
 
64
  if ( isset( $this->products[0]['f_price'] ) ) {
65
  usort( $this->products, array( $this, 'compare_price_asc' ) );
76
  break;
77
 
78
  case 'date':
79
+ case 'date-desc':
80
 
81
  if ( isset( $this->products[0]['post_data'] ) ) {
82
  usort( $this->products, array( $this, 'compare_date' ) );
84
 
85
  break;
86
 
87
+ case 'date-asc':
88
+
89
+ if ( isset( $this->products[0]['post_data'] ) ) {
90
+ usort( $this->products, array( $this, 'compare_date_asc' ) );
91
+ }
92
+
93
+ break;
94
+
95
  case 'rating':
96
 
97
  if ( isset( $this->products[0]['f_rating'] ) ) {
101
  break;
102
 
103
  case 'popularity':
104
+ case 'popularity-desc':
105
 
106
  if ( isset( $this->products[0]['f_reviews'] ) ) {
107
  usort( $this->products, array( $this, 'compare_reviews' ) );
109
 
110
  break;
111
 
112
+ case 'popularity-asc':
113
+
114
+ if ( isset( $this->products[0]['f_reviews'] ) ) {
115
+ usort( $this->products, array( $this, 'compare_reviews_asc' ) );
116
+ }
117
+
118
+ break;
119
+
120
+ case 'title':
121
+ case 'title-desc':
122
+
123
+ if ( isset( $this->products[0]['title'] ) ) {
124
+ usort( $this->products, array( $this, 'compare_title' ) );
125
+ }
126
+
127
+ break;
128
+
129
+ case 'title-asc':
130
+
131
+ if ( isset( $this->products[0]['title'] ) ) {
132
+ usort( $this->products, array( $this, 'compare_title' ) );
133
+ $this->products = array_reverse($this->products);
134
+ }
135
+
136
+ break;
137
+
138
  }
139
 
140
  }
175
  return ($a < $b) ? 1 : -1;
176
  }
177
 
178
+ /*
179
+ * Compare date desc
180
+ */
181
+ private function compare_date_asc( $a, $b ) {
182
+ $a = strtotime( $a['post_data']->post_date );
183
+ $b = strtotime( $b['post_data']->post_date );
184
+ if ($a == $b) {
185
+ return 0;
186
+ }
187
+ return ($a < $b) ? -1 : 1;
188
+ }
189
+
190
  /*
191
  * Compare rating
192
  */
211
  return ($a < $b) ? 1 : -1;
212
  }
213
 
214
+ /*
215
+ * Compare rating asc
216
+ */
217
+ private function compare_reviews_asc( $a, $b ) {
218
+ $a = intval( $a['f_reviews'] * 100 );
219
+ $b = intval( $b['f_reviews'] * 100 );
220
+ if ($a == $b) {
221
+ return 0;
222
+ }
223
+ return ($a < $b) ? -1 : 1;
224
+ }
225
+
226
+ /*
227
+ * Compare title desc
228
+ */
229
+ private function compare_title( $a, $b ) {
230
+ $res = strcasecmp( $a["title"], $b["title"] );
231
+ return $res;
232
+ }
233
+
234
  /*
235
  * Return array of sorted products
236
  */
includes/class-aws-search-page.php CHANGED
@@ -89,13 +89,11 @@ if ( ! class_exists( 'AWS_Search_Page' ) ) :
89
  $paged = $query->query_vars['paged'] ? $query->query_vars['paged'] : 1;
90
  $offset = ( $paged > 1 ) ? $paged * $posts_per_page - $posts_per_page : 0;
91
 
92
-
93
- if ( $query->query && isset( $query->query['orderby'] ) ) {
94
- $order_by = $query->query['orderby'];
95
 
96
  if ( isset( $posts_array['products'] ) && ! empty( $posts_array['products'] ) ) {
97
 
98
- $posts_array['products'] = AWS()->order( $posts_array['products'], $order_by );
99
 
100
  }
101
 
89
  $paged = $query->query_vars['paged'] ? $query->query_vars['paged'] : 1;
90
  $offset = ( $paged > 1 ) ? $paged * $posts_per_page - $posts_per_page : 0;
91
 
92
+ if ( $query->query && ( isset( $query->query['orderby'] ) || isset( $query->query_vars['orderby'] ) ) ) {
 
 
93
 
94
  if ( isset( $posts_array['products'] ) && ! empty( $posts_array['products'] ) ) {
95
 
96
+ $posts_array['products'] = AWS()->order( $posts_array['products'], $query );
97
 
98
  }
99
 
includes/class-aws-search.php CHANGED
@@ -145,6 +145,18 @@ if ( ! class_exists( 'AWS_Search' ) ) :
145
 
146
 
147
  $posts_ids = $this->query_index_table();
 
 
 
 
 
 
 
 
 
 
 
 
148
  $products_array = $this->get_products( $posts_ids );
149
 
150
  /**
@@ -264,8 +276,15 @@ if ( ! class_exists( 'AWS_Search' ) ) :
264
  $relevance_title_like = 40 + 2 * $search_term_len;
265
  $relevance_content_like = 35 + 1 * $search_term_len;
266
 
267
- $search_term_like = preg_replace( '/(s|es|ies)$/i', '', $search_term );
268
- $like = '%' . $wpdb->esc_like( $search_term_like ) . '%';
 
 
 
 
 
 
 
269
 
270
  if ( $search_term_len > 1 ) {
271
  $search_array[] = $wpdb->prepare( '( term LIKE %s )', $like );
@@ -421,6 +440,7 @@ if ( ! class_exists( 'AWS_Search' ) ) :
421
  $show_image = AWS()->get_settings( 'show_image' );
422
  $show_sku = AWS()->get_settings( 'show_sku' );
423
  $show_stock_status = AWS()->get_settings( 'show_stock' );
 
424
 
425
 
426
  foreach ( $posts_ids as $post_id ) {
@@ -442,6 +462,7 @@ if ( ! class_exists( 'AWS_Search' ) ) :
442
  $image = '';
443
  $sku = '';
444
  $stock_status = '';
 
445
 
446
 
447
  if ( $show_excerpt === 'true' ) {
@@ -485,7 +506,11 @@ if ( ! class_exists( 'AWS_Search' ) ) :
485
  if ( $show_sku === 'true' ) {
486
  $sku = $product->get_sku();
487
  }
488
-
 
 
 
 
489
  if ( $show_stock_status === 'true' ) {
490
  if ( $product->is_in_stock() ) {
491
  $stock_status = array(
@@ -517,6 +542,7 @@ if ( ! class_exists( 'AWS_Search' ) ) :
517
  'on_sale' => $on_sale,
518
  'sku' => $sku,
519
  'stock_status' => $stock_status,
 
520
  'f_price' => $f_price,
521
  'f_rating' => $f_rating,
522
  'f_reviews' => $f_reviews,
145
 
146
 
147
  $posts_ids = $this->query_index_table();
148
+
149
+ /**
150
+ * Filters array of products ids
151
+ *
152
+ * @since 1.53
153
+ *
154
+ * @param array $posts_ids Array of products ids
155
+ * @param string $s Search query
156
+ */
157
+ $posts_ids = apply_filters( 'aws_search_results_products_ids', $posts_ids, $s );
158
+
159
+
160
  $products_array = $this->get_products( $posts_ids );
161
 
162
  /**
276
  $relevance_title_like = 40 + 2 * $search_term_len;
277
  $relevance_content_like = 35 + 1 * $search_term_len;
278
 
279
+
280
+ $search_term_norm = preg_replace( '/(s|es|ies)$/i', '', $search_term );
281
+
282
+ if ( $search_term_norm ) {
283
+ $search_term = $search_term_norm;
284
+ }
285
+
286
+ $like = '%' . $wpdb->esc_like( $search_term ) . '%';
287
+
288
 
289
  if ( $search_term_len > 1 ) {
290
  $search_array[] = $wpdb->prepare( '( term LIKE %s )', $like );
440
  $show_image = AWS()->get_settings( 'show_image' );
441
  $show_sku = AWS()->get_settings( 'show_sku' );
442
  $show_stock_status = AWS()->get_settings( 'show_stock' );
443
+ $show_featured = AWS()->get_settings( 'show_featured' );
444
 
445
 
446
  foreach ( $posts_ids as $post_id ) {
462
  $image = '';
463
  $sku = '';
464
  $stock_status = '';
465
+ $featured = '';
466
 
467
 
468
  if ( $show_excerpt === 'true' ) {
506
  if ( $show_sku === 'true' ) {
507
  $sku = $product->get_sku();
508
  }
509
+
510
+ if ( $show_featured === 'true' ) {
511
+ $featured = $product->is_featured();
512
+ }
513
+
514
  if ( $show_stock_status === 'true' ) {
515
  if ( $product->is_in_stock() ) {
516
  $stock_status = array(
542
  'on_sale' => $on_sale,
543
  'sku' => $sku,
544
  'stock_status' => $stock_status,
545
+ 'featured' => $featured,
546
  'f_price' => $f_price,
547
  'f_rating' => $f_rating,
548
  'f_reviews' => $f_reviews,
includes/class-aws-table.php CHANGED
@@ -722,7 +722,29 @@ if ( ! class_exists( 'AWS_Table' ) ) :
722
  */
723
  $str_array = apply_filters( 'aws_extracted_terms', $str_array );
724
 
725
- return $str_array;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
726
 
727
  }
728
 
722
  */
723
  $str_array = apply_filters( 'aws_extracted_terms', $str_array );
724
 
725
+ $str_new_array = array();
726
+
727
+ // Remove e, es, ies from the end of the string
728
+ if ( ! empty( $str_array ) && $str_array ) {
729
+ foreach( $str_array as $str_item_term => $str_item_num ) {
730
+ if ( $str_item_term ) {
731
+ $new_array_key = preg_replace( '/(s|es|ies)$/i', '', $str_item_term );
732
+
733
+ if ( $new_array_key ) {
734
+ if ( ! isset( $str_new_array[$new_array_key] ) ) {
735
+ $str_new_array[$new_array_key] = $str_item_num;
736
+ }
737
+ } else {
738
+ if ( ! isset( $str_new_array[$str_item_term] ) ) {
739
+ $str_new_array[$str_item_term] = $str_item_num;
740
+ }
741
+ }
742
+
743
+ }
744
+ }
745
+ }
746
+
747
+ return $str_new_array;
748
 
749
  }
750
 
includes/class-aws-versions.php CHANGED
@@ -202,6 +202,19 @@ if ( ! class_exists( 'AWS_Versions' ) ) :
202
 
203
  }
204
 
 
 
 
 
 
 
 
 
 
 
 
 
 
205
  }
206
 
207
  update_option( 'aws_plugin_ver', AWS_VERSION );
202
 
203
  }
204
 
205
+ if ( version_compare( $current_version, '1.53', '<' ) ) {
206
+
207
+ $settings = get_option( 'aws_settings' );
208
+
209
+ if ( $settings ) {
210
+ if ( ! isset( $settings['show_featured'] ) ) {
211
+ $settings['show_featured'] = 'false';
212
+ update_option( 'aws_settings', $settings );
213
+ }
214
+ }
215
+
216
+ }
217
+
218
  }
219
 
220
  update_option( 'aws_plugin_ver', AWS_VERSION );
includes/options.php CHANGED
@@ -289,7 +289,6 @@ $options['results'][] = array(
289
  )
290
  );
291
 
292
-
293
  $options['results'][] = array(
294
  "name" => __( "Show stock status", "aws" ),
295
  "desc" => __( "Show stock status for every product in search results.", "aws" ),
@@ -300,4 +299,16 @@ $options['results'][] = array(
300
  'true' => __( 'On', 'aws' ),
301
  'false' => __( 'Off', 'aws' ),
302
  )
 
 
 
 
 
 
 
 
 
 
 
 
303
  );
289
  )
290
  );
291
 
 
292
  $options['results'][] = array(
293
  "name" => __( "Show stock status", "aws" ),
294
  "desc" => __( "Show stock status for every product in search results.", "aws" ),
299
  'true' => __( 'On', 'aws' ),
300
  'false' => __( 'Off', 'aws' ),
301
  )
302
+ );
303
+
304
+ $options['results'][] = array(
305
+ "name" => __( "Show featured icon", "aws" ),
306
+ "desc" => __( "Show or not star icon for featured products.", "aws" ),
307
+ "id" => "show_featured",
308
+ "value" => 'false',
309
+ "type" => "radio",
310
+ 'choices' => array(
311
+ 'true' => __( 'On', 'aws' ),
312
+ 'false' => __( 'Off', 'aws' ),
313
+ )
314
  );
languages/aws.pot CHANGED
@@ -343,6 +343,12 @@ msgstr ""
343
  msgid "Show stock status for every product in search results."
344
  msgstr ""
345
 
 
 
 
 
 
 
346
  #: includes/options.php:167
347
  msgid "Max number of results"
348
  msgstr ""
343
  msgid "Show stock status for every product in search results."
344
  msgstr ""
345
 
346
+ msgid "Show featured icon"
347
+ msgstr ""
348
+
349
+ msgid "Show or not star icon for featured products."
350
+ msgstr ""
351
+
352
  #: includes/options.php:167
353
  msgid "Max number of results"
354
  msgstr ""
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_i
4
  Tags: widget, plugin, woocommerce, search, product search, woocommerce search, ajax search, live search, custom search, ajax, shortcode, better search, relevance search, relevant search, search by sku, search plugin, shop, store, wordpress search, wp ajax search, wp search, wp search plugin, sidebar, ecommerce, merketing, products, category search, instant-search, search highlight, woocommerce advanced search, woocommerce live search, WooCommerce Plugin, woocommerce product search
5
  Requires at least: 4.0
6
  Tested up to: 4.9.8
7
- Stable tag: 1.52
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -32,6 +32,7 @@ Advanced Woo Search - powerful live search plugin for WooCommerce. Just start ty
32
  * Plurals support
33
  * Diacritical marks support
34
  * Google Analytics support
 
35
  * **WPML**, **Polylang**, **WooCommerce Multilingual**, **qTranslate** support
36
  * **WPML multi-currency** support
37
  * Custom Product Tabs for WooCommerce plugin support
@@ -39,6 +40,8 @@ Advanced Woo Search - powerful live search plugin for WooCommerce. Just start ty
39
 
40
  = Premium Features =
41
 
 
 
42
  [Premium Version Demo](https://advanced-woo-search.com/?utm_source=wp-repo&utm_medium=listing&utm_campaign=aws-repo)
43
 
44
  * Search **results layouts**
@@ -98,6 +101,12 @@ Yep. This plugin is always compatible with the latest version of Woocommerce?
98
 
99
  == Changelog ==
100
 
 
 
 
 
 
 
101
  = 1.52 =
102
  * Fix terms translation for multilingual plugins
103
  * Update special chars filter
4
  Tags: widget, plugin, woocommerce, search, product search, woocommerce search, ajax search, live search, custom search, ajax, shortcode, better search, relevance search, relevant search, search by sku, search plugin, shop, store, wordpress search, wp ajax search, wp search, wp search plugin, sidebar, ecommerce, merketing, products, category search, instant-search, search highlight, woocommerce advanced search, woocommerce live search, WooCommerce Plugin, woocommerce product search
5
  Requires at least: 4.0
6
  Tested up to: 4.9.8
7
+ Stable tag: 1.53
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
32
  * Plurals support
33
  * Diacritical marks support
34
  * Google Analytics support
35
+ * Seamless integration option for easy replacing your current search form
36
  * **WPML**, **Polylang**, **WooCommerce Multilingual**, **qTranslate** support
37
  * **WPML multi-currency** support
38
  * Custom Product Tabs for WooCommerce plugin support
40
 
41
  = Premium Features =
42
 
43
+ Additional features available only in PRO plugin version.
44
+
45
  [Premium Version Demo](https://advanced-woo-search.com/?utm_source=wp-repo&utm_medium=listing&utm_campaign=aws-repo)
46
 
47
  * Search **results layouts**
101
 
102
  == Changelog ==
103
 
104
+ = 1.53 =
105
+ * Fix bug with search results page ordering
106
+ * Add svg loading icon
107
+ * Mark featured products in search results
108
+ * Add aws_search_results_products_ids filter
109
+
110
  = 1.52 =
111
  * Fix terms translation for multilingual plugins
112
  * Update special chars filter