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 | Advanced Woo Search |
Version | 1.53 |
Comparing to | |
See all releases |
Code changes from version 1.52 to 1.53
- advanced-woo-search.php +3 -3
- assets/css/common.css +64 -7
- assets/js/common.js +8 -2
- includes/class-aws-admin.php +1 -1
- includes/class-aws-markup.php +2 -0
- includes/class-aws-order.php +88 -1
- includes/class-aws-search-page.php +2 -4
- includes/class-aws-search.php +29 -3
- includes/class-aws-table.php +23 -1
- includes/class-aws-versions.php +13 -0
- includes/options.php +12 -1
- languages/aws.pot +6 -0
- readme.txt +10 -1
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.
|
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.
|
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
|
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 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
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
|
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 |
-
|
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
|
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, $
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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'], $
|
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 |
-
|
268 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.
|
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
|