Version Description
- Add - Synonyms support
- Add - Search by product ID
- Fix - Divi theme integration bug with double search form
- Fix - Bug with cache for search results
- Fix - Support for WooCommerce hooks
- Fix - Support for search exclude plugin
Download this release
Release Info
Developer | Mihail Barinov |
Plugin | Advanced Woo Search |
Version | 1.79 |
Comparing to | |
See all releases |
Code changes from version 1.78 to 1.79
- advanced-woo-search.php +2 -2
- assets/js/common.js +1 -1
- includes/class-aws-admin-fields.php +3 -1
- includes/class-aws-admin.php +19 -0
- includes/class-aws-helpers.php +59 -0
- includes/class-aws-integrations.php +35 -3
- includes/class-aws-markup.php +1 -1
- includes/class-aws-search.php +11 -2
- includes/class-aws-table.php +16 -21
- includes/class-aws-versions.php +13 -0
- includes/options.php +13 -1
- languages/advanced-woo-search.pot +6 -0
- readme.txt +12 -3
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: advanced-woo-search
|
@@ -16,7 +16,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
16 |
exit;
|
17 |
}
|
18 |
|
19 |
-
define( 'AWS_VERSION', '1.
|
20 |
|
21 |
|
22 |
define( 'AWS_DIR', dirname( __FILE__ ) );
|
3 |
/*
|
4 |
Plugin Name: Advanced Woo Search
|
5 |
Description: Advance ajax WooCommerce product search.
|
6 |
+
Version: 1.79
|
7 |
Author: ILLID
|
8 |
Author URI: https://advanced-woo-search.com/
|
9 |
Text Domain: advanced-woo-search
|
16 |
exit;
|
17 |
}
|
18 |
|
19 |
+
define( 'AWS_VERSION', '1.79' );
|
20 |
|
21 |
|
22 |
define( 'AWS_DIR', dirname( __FILE__ ) );
|
assets/js/common.js
CHANGED
@@ -47,7 +47,7 @@
|
|
47 |
return;
|
48 |
}
|
49 |
|
50 |
-
if (
|
51 |
methods.showResults( cachedResponse[searchFor] );
|
52 |
return;
|
53 |
}
|
47 |
return;
|
48 |
}
|
49 |
|
50 |
+
if ( cachedResponse.hasOwnProperty( searchFor ) ) {
|
51 |
methods.showResults( cachedResponse[searchFor] );
|
52 |
return;
|
53 |
}
|
includes/class-aws-admin-fields.php
CHANGED
@@ -86,7 +86,9 @@ if ( ! class_exists( 'AWS_Admin_Fields' ) ) :
|
|
86 |
<tr valign="top">
|
87 |
<th scope="row"><?php echo esc_html( $value['name'] ); ?></th>
|
88 |
<td>
|
89 |
-
|
|
|
|
|
90 |
<br><span class="description"><?php echo wp_kses_post( $value['desc'] ); ?></span>
|
91 |
</td>
|
92 |
</tr>
|
86 |
<tr valign="top">
|
87 |
<th scope="row"><?php echo esc_html( $value['name'] ); ?></th>
|
88 |
<td>
|
89 |
+
<?php $textarea_cols = isset( $value['cols'] ) ? $value['cols'] : "55"; ?>
|
90 |
+
<?php $textarea_rows = isset( $value['rows'] ) ? $value['rows'] : "4"; ?>
|
91 |
+
<textarea id="<?php echo esc_attr( $value['id'] ); ?>" name="<?php echo esc_attr( $value['id'] ); ?>" cols="<?php echo $textarea_cols; ?>" rows="<?php echo $textarea_rows; ?>"><?php print stripslashes( $plugin_options[ $value['id'] ] ); ?></textarea>
|
92 |
<br><span class="description"><?php echo wp_kses_post( $value['desc'] ); ?></span>
|
93 |
</td>
|
94 |
</tr>
|
includes/class-aws-admin.php
CHANGED
@@ -112,6 +112,16 @@ class AWS_Admin {
|
|
112 |
}
|
113 |
|
114 |
$new_value = isset( $_POST[ $values['id'] ] ) ? $_POST[ $values['id'] ] : '';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
115 |
$update_settings[ $values['id'] ] = (string) sanitize_text_field( $new_value );
|
116 |
|
117 |
if ( isset( $values['sub_option'] ) ) {
|
@@ -254,6 +264,15 @@ class AWS_Admin {
|
|
254 |
continue;
|
255 |
}
|
256 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
257 |
$default_settings[$values['id']] = (string) sanitize_text_field( $values['value'] );
|
258 |
|
259 |
if (isset( $values['sub_option'])) {
|
112 |
}
|
113 |
|
114 |
$new_value = isset( $_POST[ $values['id'] ] ) ? $_POST[ $values['id'] ] : '';
|
115 |
+
|
116 |
+
if ( $values['type'] === 'textarea' ) {
|
117 |
+
if ( function_exists('sanitize_textarea_field') ) {
|
118 |
+
$update_settings[ $values['id'] ] = (string) sanitize_textarea_field( $new_value );
|
119 |
+
} else {
|
120 |
+
$update_settings[ $values['id'] ] = (string) str_replace( "<\n", "<\n", wp_strip_all_tags( $new_value ) );
|
121 |
+
}
|
122 |
+
continue;
|
123 |
+
}
|
124 |
+
|
125 |
$update_settings[ $values['id'] ] = (string) sanitize_text_field( $new_value );
|
126 |
|
127 |
if ( isset( $values['sub_option'] ) ) {
|
264 |
continue;
|
265 |
}
|
266 |
|
267 |
+
if ( $values['type'] === 'textarea' ) {
|
268 |
+
if ( function_exists('sanitize_textarea_field') ) {
|
269 |
+
$default_settings[ $values['id'] ] = (string) sanitize_textarea_field( $values['value'] );
|
270 |
+
} else {
|
271 |
+
$default_settings[ $values['id'] ] = (string) str_replace( "<\n", "<\n", wp_strip_all_tags( $values['value'] ) );
|
272 |
+
}
|
273 |
+
continue;
|
274 |
+
}
|
275 |
+
|
276 |
$default_settings[$values['id']] = (string) sanitize_text_field( $values['value'] );
|
277 |
|
278 |
if (isset( $values['sub_option'])) {
|
includes/class-aws-helpers.php
CHANGED
@@ -486,6 +486,65 @@ if ( ! class_exists( 'AWS_Helpers' ) ) :
|
|
486 |
|
487 |
}
|
488 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
489 |
/*
|
490 |
* Strip shortcodes
|
491 |
*/
|
486 |
|
487 |
}
|
488 |
|
489 |
+
/*
|
490 |
+
* Add synonyms
|
491 |
+
*/
|
492 |
+
static public function get_synonyms( $str_array ) {
|
493 |
+
|
494 |
+
$synonyms = AWS()->get_settings( 'synonyms' );
|
495 |
+
$synonyms_array = array();
|
496 |
+
$new_str_array = array();
|
497 |
+
|
498 |
+
if ( $synonyms ) {
|
499 |
+
$synonyms_array = preg_split( '/\r\n|\r|\n| /', $synonyms );
|
500 |
+
}
|
501 |
+
|
502 |
+
if ( $str_array && is_array( $str_array ) && ! empty( $str_array ) && $synonyms_array && ! empty( $synonyms_array ) ) {
|
503 |
+
|
504 |
+
$synonyms_array = array_map( 'trim', $synonyms_array );
|
505 |
+
|
506 |
+
/**
|
507 |
+
* Filters synonyms array before adding them to the index table where need
|
508 |
+
* @since 1.79
|
509 |
+
* @param array $synonyms_array Array of synonyms groups
|
510 |
+
*/
|
511 |
+
$synonyms_array = apply_filters( 'aws_synonyms_option_array', $synonyms_array );
|
512 |
+
|
513 |
+
foreach ( $synonyms_array as $synonyms_string ) {
|
514 |
+
|
515 |
+
if ( $synonyms_string ) {
|
516 |
+
|
517 |
+
$synonym_array = explode( ',', $synonyms_string );
|
518 |
+
|
519 |
+
if ( $synonym_array && ! empty( $synonym_array ) ) {
|
520 |
+
$synonym_array = array_map( 'trim', $synonym_array );
|
521 |
+
foreach ( $synonym_array as $synonym_item ) {
|
522 |
+
if ( $synonym_item && isset( $str_array[$synonym_item] ) ) {
|
523 |
+
$new_str_array = array_merge( $new_str_array, $synonym_array );
|
524 |
+
break;
|
525 |
+
}
|
526 |
+
}
|
527 |
+
}
|
528 |
+
|
529 |
+
}
|
530 |
+
|
531 |
+
}
|
532 |
+
|
533 |
+
}
|
534 |
+
|
535 |
+
if ( $new_str_array ) {
|
536 |
+
$new_str_array = array_unique( $new_str_array );
|
537 |
+
foreach ( $new_str_array as $new_str_array_item ) {
|
538 |
+
if ( ! isset( $str_array[$new_str_array_item] ) ) {
|
539 |
+
$str_array[$new_str_array_item] = 1;
|
540 |
+
}
|
541 |
+
}
|
542 |
+
}
|
543 |
+
|
544 |
+
return $str_array;
|
545 |
+
|
546 |
+
}
|
547 |
+
|
548 |
/*
|
549 |
* Strip shortcodes
|
550 |
*/
|
includes/class-aws-integrations.php
CHANGED
@@ -75,11 +75,17 @@ if ( ! class_exists( 'AWS_Integrations' ) ) :
|
|
75 |
// Seamless integration
|
76 |
if ( AWS()->get_settings( 'seamless' ) === 'true' ) {
|
77 |
add_filter( 'et_html_main_header', array( $this, 'et_html_main_header' ) );
|
|
|
78 |
}
|
79 |
|
80 |
// Wholesale plugin hide certain products
|
81 |
if ( class_exists( 'WooCommerceWholeSalePrices' ) ) {
|
82 |
-
add_filter( 'aws_search_results_products',
|
|
|
|
|
|
|
|
|
|
|
83 |
}
|
84 |
|
85 |
}
|
@@ -390,11 +396,18 @@ if ( ! class_exists( 'AWS_Integrations' ) ) :
|
|
390 |
*/
|
391 |
public function et_html_main_header( $html ) {
|
392 |
if ( function_exists( 'aws_get_search_form' ) ) {
|
393 |
-
|
|
|
394 |
$form = aws_get_search_form(false);
|
395 |
-
|
|
|
|
|
|
|
|
|
|
|
396 |
$html = trim(preg_replace('/\s\s+/', ' ', $html));
|
397 |
$html = preg_replace( $pattern, $form, $html );
|
|
|
398 |
}
|
399 |
return $html;
|
400 |
}
|
@@ -440,6 +453,25 @@ if ( ! class_exists( 'AWS_Integrations' ) ) :
|
|
440 |
|
441 |
}
|
442 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
443 |
}
|
444 |
|
445 |
endif;
|
75 |
// Seamless integration
|
76 |
if ( AWS()->get_settings( 'seamless' ) === 'true' ) {
|
77 |
add_filter( 'et_html_main_header', array( $this, 'et_html_main_header' ) );
|
78 |
+
add_filter( 'et_html_slide_header', array( $this, 'et_html_main_header' ) );
|
79 |
}
|
80 |
|
81 |
// Wholesale plugin hide certain products
|
82 |
if ( class_exists( 'WooCommerceWholeSalePrices' ) ) {
|
83 |
+
add_filter( 'aws_search_results_products', array( $this,'wholesale_hide_products' ) );
|
84 |
+
}
|
85 |
+
|
86 |
+
// Search Exclude plugin
|
87 |
+
if ( class_exists( 'SearchExclude' ) ) {
|
88 |
+
add_filter( 'aws_index_product_ids', array( $this, 'search_exclude_filter' ) );
|
89 |
}
|
90 |
|
91 |
}
|
396 |
*/
|
397 |
public function et_html_main_header( $html ) {
|
398 |
if ( function_exists( 'aws_get_search_form' ) ) {
|
399 |
+
|
400 |
+
$pattern = '/(<form[\s\S]*?<\/form>)/i';
|
401 |
$form = aws_get_search_form(false);
|
402 |
+
|
403 |
+
if ( strpos( $html, 'aws-container' ) !== false ) {
|
404 |
+
$pattern = '/(<div class="aws-container"[\s\S]*?<form.*?<\/form><\/div>)/i';
|
405 |
+
}
|
406 |
+
|
407 |
+
$html = '<style>.et_search_outer .aws-container { float: right;margin-right: 40px;margin-top: 20px; }</style>' . $html;
|
408 |
$html = trim(preg_replace('/\s\s+/', ' ', $html));
|
409 |
$html = preg_replace( $pattern, $form, $html );
|
410 |
+
|
411 |
}
|
412 |
return $html;
|
413 |
}
|
453 |
|
454 |
}
|
455 |
|
456 |
+
/*
|
457 |
+
* Remove products that was excluded with Search Exclude plugin ( https://wordpress.org/plugins/search-exclude/ )
|
458 |
+
*/
|
459 |
+
public function search_exclude_filter( $products ) {
|
460 |
+
|
461 |
+
$excluded = get_option('sep_exclude');
|
462 |
+
|
463 |
+
if ( $excluded && is_array( $excluded ) && ! empty( $excluded ) && $products && is_array( $products ) ) {
|
464 |
+
foreach( $products as $key => $product_id ) {
|
465 |
+
if ( false !== array_search( $product_id, $excluded ) ) {
|
466 |
+
unset( $products[$key] );
|
467 |
+
}
|
468 |
+
}
|
469 |
+
}
|
470 |
+
|
471 |
+
return $products;
|
472 |
+
|
473 |
+
}
|
474 |
+
|
475 |
}
|
476 |
|
477 |
endif;
|
includes/class-aws-markup.php
CHANGED
@@ -52,7 +52,7 @@ if ( ! class_exists( 'AWS_Markup' ) ) :
|
|
52 |
$params_string = '';
|
53 |
|
54 |
$params = array(
|
55 |
-
'data-url' => admin_url('admin-ajax.php'),
|
56 |
'data-siteurl' => home_url(),
|
57 |
'data-lang' => $current_lang ? $current_lang : '',
|
58 |
'data-show-loader' => $show_loader,
|
52 |
$params_string = '';
|
53 |
|
54 |
$params = array(
|
55 |
+
'data-url' => class_exists( 'WC_AJAX' ) ? WC_AJAX::get_endpoint( 'aws_action' ) : admin_url( 'admin-ajax.php' ),
|
56 |
'data-siteurl' => home_url(),
|
57 |
'data-lang' => $current_lang ? $current_lang : '',
|
58 |
'data-show-loader' => $show_loader,
|
includes/class-aws-search.php
CHANGED
@@ -49,8 +49,12 @@ if ( ! class_exists( 'AWS_Search' ) ) :
|
|
49 |
|
50 |
$this->data['settings'] = get_option( 'aws_settings' );
|
51 |
|
52 |
-
|
53 |
-
|
|
|
|
|
|
|
|
|
54 |
|
55 |
}
|
56 |
|
@@ -343,6 +347,11 @@ if ( ! class_exists( 'AWS_Search' ) ) :
|
|
343 |
$relevance_array['sku'][] = $wpdb->prepare( "( case when ( term_source = 'sku' AND term LIKE %s ) then 50 else 0 end )", $like );
|
344 |
break;
|
345 |
|
|
|
|
|
|
|
|
|
|
|
346 |
}
|
347 |
|
348 |
}
|
49 |
|
50 |
$this->data['settings'] = get_option( 'aws_settings' );
|
51 |
|
52 |
+
if ( isset( $_REQUEST['wc-ajax'] ) ) {
|
53 |
+
add_action( 'wc_ajax_aws_action', array( $this, 'action_callback' ) );
|
54 |
+
} else {
|
55 |
+
add_action( 'wp_ajax_aws_action', array( $this, 'action_callback' ) );
|
56 |
+
add_action( 'wp_ajax_nopriv_aws_action', array( $this, 'action_callback' ) );
|
57 |
+
}
|
58 |
|
59 |
}
|
60 |
|
347 |
$relevance_array['sku'][] = $wpdb->prepare( "( case when ( term_source = 'sku' AND term LIKE %s ) then 50 else 0 end )", $like );
|
348 |
break;
|
349 |
|
350 |
+
case 'id':
|
351 |
+
$relevance_array['id'][] = $wpdb->prepare( "( case when ( term_source = 'id' AND term = '%s' ) then 300 else 0 end )", $search_term );
|
352 |
+
$relevance_array['id'][] = $wpdb->prepare( "( case when ( term_source = 'id' AND term LIKE %s ) then 5 else 0 end )", $like );
|
353 |
+
break;
|
354 |
+
|
355 |
}
|
356 |
|
357 |
}
|
includes/class-aws-table.php
CHANGED
@@ -290,6 +290,13 @@ if ( ! class_exists( 'AWS_Table' ) ) :
|
|
290 |
*/
|
291 |
private function fill_table( $posts ) {
|
292 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
293 |
foreach ( $posts as $found_post_id ) {
|
294 |
|
295 |
$data = array();
|
@@ -297,10 +304,6 @@ if ( ! class_exists( 'AWS_Table' ) ) :
|
|
297 |
$data['terms'] = array();
|
298 |
$data['id'] = $found_post_id;
|
299 |
|
300 |
-
if ( $this->is_excluded( $data['id'] ) ) {
|
301 |
-
continue;
|
302 |
-
}
|
303 |
-
|
304 |
$product = wc_get_product( $data['id'] );
|
305 |
|
306 |
if( ! is_a( $product, 'WC_Product' ) ) {
|
@@ -327,6 +330,8 @@ if ( ! class_exists( 'AWS_Table' ) ) :
|
|
327 |
|
328 |
$sku = $product->get_sku();
|
329 |
|
|
|
|
|
330 |
$title = apply_filters( 'the_title', get_the_title( $data['id'] ), $data['id'] );
|
331 |
|
332 |
$content = apply_filters( 'the_content', get_post_field( 'post_content', $data['id'] ), $data['id'] );
|
@@ -355,6 +360,8 @@ if ( ! class_exists( 'AWS_Table' ) ) :
|
|
355 |
$sku = $sku . ' ' . $variation_sku;
|
356 |
}
|
357 |
|
|
|
|
|
358 |
if ( $variation_desc ) {
|
359 |
$content = $content . ' ' . $variation_desc;
|
360 |
}
|
@@ -428,6 +435,7 @@ if ( ! class_exists( 'AWS_Table' ) ) :
|
|
428 |
$data['terms']['content'] = $this->extract_terms( $content );
|
429 |
$data['terms']['excerpt'] = $this->extract_terms( $excerpt );
|
430 |
$data['terms']['sku'] = $this->extract_terms( $sku );
|
|
|
431 |
|
432 |
|
433 |
if ( $cat_array && ! empty( $cat_array ) ) {
|
@@ -476,6 +484,7 @@ if ( ! class_exists( 'AWS_Table' ) ) :
|
|
476 |
$translated_post_data['terms']['content'] = $this->extract_terms( $translated_content );
|
477 |
$translated_post_data['terms']['excerpt'] = $this->extract_terms( $translated_excerpt );
|
478 |
$translated_post_data['terms']['sku'] = $this->extract_terms( $sku );
|
|
|
479 |
|
480 |
|
481 |
//Insert translated product data into table
|
@@ -525,6 +534,7 @@ if ( ! class_exists( 'AWS_Table' ) ) :
|
|
525 |
$translated_post_data['terms']['content'] = $this->extract_terms( $translated_content );
|
526 |
$translated_post_data['terms']['excerpt'] = $this->extract_terms( $translated_excerpt );
|
527 |
$translated_post_data['terms']['sku'] = $this->extract_terms( $sku );
|
|
|
528 |
|
529 |
|
530 |
//Insert translated product data into table
|
@@ -735,23 +745,6 @@ if ( ! class_exists( 'AWS_Table' ) ) :
|
|
735 |
|
736 |
}
|
737 |
|
738 |
-
/*
|
739 |
-
* Check is product excluded with Search Exclude plugin ( https://wordpress.org/plugins/search-exclude/ )
|
740 |
-
*/
|
741 |
-
private function is_excluded( $id ) {
|
742 |
-
|
743 |
-
$excluded = get_option('sep_exclude');
|
744 |
-
|
745 |
-
if ( $excluded && is_array( $excluded ) && ! empty( $excluded ) ) {
|
746 |
-
if ( false !== array_search( $id, $excluded ) ) {
|
747 |
-
return true;
|
748 |
-
}
|
749 |
-
}
|
750 |
-
|
751 |
-
return false;
|
752 |
-
|
753 |
-
}
|
754 |
-
|
755 |
/*
|
756 |
* Extract terms from content
|
757 |
*/
|
@@ -836,6 +829,8 @@ if ( ! class_exists( 'AWS_Table' ) ) :
|
|
836 |
}
|
837 |
}
|
838 |
|
|
|
|
|
839 |
return $str_new_array;
|
840 |
|
841 |
}
|
290 |
*/
|
291 |
private function fill_table( $posts ) {
|
292 |
|
293 |
+
/**
|
294 |
+
* Products that will be indexed
|
295 |
+
* @since 1.79
|
296 |
+
* @param array $posts Array of products IDs
|
297 |
+
*/
|
298 |
+
$posts = apply_filters( 'aws_index_product_ids', $posts );
|
299 |
+
|
300 |
foreach ( $posts as $found_post_id ) {
|
301 |
|
302 |
$data = array();
|
304 |
$data['terms'] = array();
|
305 |
$data['id'] = $found_post_id;
|
306 |
|
|
|
|
|
|
|
|
|
307 |
$product = wc_get_product( $data['id'] );
|
308 |
|
309 |
if( ! is_a( $product, 'WC_Product' ) ) {
|
330 |
|
331 |
$sku = $product->get_sku();
|
332 |
|
333 |
+
$ids = $data['id'];
|
334 |
+
|
335 |
$title = apply_filters( 'the_title', get_the_title( $data['id'] ), $data['id'] );
|
336 |
|
337 |
$content = apply_filters( 'the_content', get_post_field( 'post_content', $data['id'] ), $data['id'] );
|
360 |
$sku = $sku . ' ' . $variation_sku;
|
361 |
}
|
362 |
|
363 |
+
$ids = $ids . ' ' . $child_id;
|
364 |
+
|
365 |
if ( $variation_desc ) {
|
366 |
$content = $content . ' ' . $variation_desc;
|
367 |
}
|
435 |
$data['terms']['content'] = $this->extract_terms( $content );
|
436 |
$data['terms']['excerpt'] = $this->extract_terms( $excerpt );
|
437 |
$data['terms']['sku'] = $this->extract_terms( $sku );
|
438 |
+
$data['terms']['id'] = $this->extract_terms( $ids );
|
439 |
|
440 |
|
441 |
if ( $cat_array && ! empty( $cat_array ) ) {
|
484 |
$translated_post_data['terms']['content'] = $this->extract_terms( $translated_content );
|
485 |
$translated_post_data['terms']['excerpt'] = $this->extract_terms( $translated_excerpt );
|
486 |
$translated_post_data['terms']['sku'] = $this->extract_terms( $sku );
|
487 |
+
$translated_post_data['terms']['id'] = $this->extract_terms( $translated_post->ID );
|
488 |
|
489 |
|
490 |
//Insert translated product data into table
|
534 |
$translated_post_data['terms']['content'] = $this->extract_terms( $translated_content );
|
535 |
$translated_post_data['terms']['excerpt'] = $this->extract_terms( $translated_excerpt );
|
536 |
$translated_post_data['terms']['sku'] = $this->extract_terms( $sku );
|
537 |
+
$translated_post_data['terms']['id'] = $this->extract_terms( $ids );
|
538 |
|
539 |
|
540 |
//Insert translated product data into table
|
745 |
|
746 |
}
|
747 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
748 |
/*
|
749 |
* Extract terms from content
|
750 |
*/
|
829 |
}
|
830 |
}
|
831 |
|
832 |
+
$str_new_array = AWS_Helpers::get_synonyms( $str_new_array );
|
833 |
+
|
834 |
return $str_new_array;
|
835 |
|
836 |
}
|
includes/class-aws-versions.php
CHANGED
@@ -270,6 +270,19 @@ if ( ! class_exists( 'AWS_Versions' ) ) :
|
|
270 |
|
271 |
}
|
272 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
273 |
}
|
274 |
|
275 |
update_option( 'aws_plugin_ver', AWS_VERSION );
|
270 |
|
271 |
}
|
272 |
|
273 |
+
if ( version_compare( $current_version, '1.79', '<' ) ) {
|
274 |
+
|
275 |
+
$settings = get_option( 'aws_settings' );
|
276 |
+
|
277 |
+
if ( $settings ) {
|
278 |
+
if ( ! isset( $settings['synonyms'] ) ) {
|
279 |
+
$settings['synonyms'] = 'buy, pay, purchase, acquire box, housing, unit, package';
|
280 |
+
update_option( 'aws_settings', $settings );
|
281 |
+
}
|
282 |
+
}
|
283 |
+
|
284 |
+
}
|
285 |
+
|
286 |
}
|
287 |
|
288 |
update_option( 'aws_plugin_ver', AWS_VERSION );
|
includes/options.php
CHANGED
@@ -52,7 +52,7 @@ $options['general'][] = array(
|
|
52 |
"desc" => __( "Search source: Drag&drop sources to activate or deactivate them.", "advanced-woo-search" ),
|
53 |
"id" => "search_in",
|
54 |
"value" => "title,content,sku,excerpt",
|
55 |
-
"choices" => array( "title", "content", "sku", "excerpt", "category", "tag" ),
|
56 |
"type" => "sortable"
|
57 |
);
|
58 |
|
@@ -73,6 +73,18 @@ $options['general'][] = array(
|
|
73 |
"desc" => __( "Comma separated list of words that will be excluded from search.", "advanced-woo-search" ) . '<br>' . __( "Re-index required on change.", "advanced-woo-search" ),
|
74 |
"id" => "stopwords",
|
75 |
"value" => "a, also, am, an, and, are, as, at, be, but, by, call, can, co, con, de, do, due, eg, eight, etc, even, ever, every, for, from, full, go, had, has, hasnt, have, he, hence, her, here, his, how, ie, if, in, inc, into, is, it, its, ltd, me, my, no, none, nor, not, now, of, off, on, once, one, only, onto, or, our, ours, out, over, own, part, per, put, re, see, so, some, ten, than, that, the, their, there, these, they, this, three, thru, thus, to, too, top, un, up, us, very, via, was, we, well, were, what, when, where, who, why, will",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
76 |
"type" => "textarea"
|
77 |
);
|
78 |
|
52 |
"desc" => __( "Search source: Drag&drop sources to activate or deactivate them.", "advanced-woo-search" ),
|
53 |
"id" => "search_in",
|
54 |
"value" => "title,content,sku,excerpt",
|
55 |
+
"choices" => array( "title", "content", "sku", "excerpt", "category", "tag", "id" ),
|
56 |
"type" => "sortable"
|
57 |
);
|
58 |
|
73 |
"desc" => __( "Comma separated list of words that will be excluded from search.", "advanced-woo-search" ) . '<br>' . __( "Re-index required on change.", "advanced-woo-search" ),
|
74 |
"id" => "stopwords",
|
75 |
"value" => "a, also, am, an, and, are, as, at, be, but, by, call, can, co, con, de, do, due, eg, eight, etc, even, ever, every, for, from, full, go, had, has, hasnt, have, he, hence, her, here, his, how, ie, if, in, inc, into, is, it, its, ltd, me, my, no, none, nor, not, now, of, off, on, once, one, only, onto, or, our, ours, out, over, own, part, per, put, re, see, so, some, ten, than, that, the, their, there, these, they, this, three, thru, thus, to, too, top, un, up, us, very, via, was, we, well, were, what, when, where, who, why, will",
|
76 |
+
"cols" => "85",
|
77 |
+
"rows" => "3",
|
78 |
+
"type" => "textarea"
|
79 |
+
);
|
80 |
+
|
81 |
+
$options['general'][] = array(
|
82 |
+
"name" => __( "Synonyms", "advanced-woo-search" ),
|
83 |
+
"desc" => __( "Comma separated list of synonym words. Each group of synonyms must be on separated text line.", "advanced-woo-search" ) . '<br>' . __( "Re-index required on change.", "advanced-woo-search" ),
|
84 |
+
"id" => "synonyms",
|
85 |
+
"value" => "buy, pay, purchase, acquire box, housing, unit, package",
|
86 |
+
"cols" => "85",
|
87 |
+
"rows" => "3",
|
88 |
"type" => "textarea"
|
89 |
);
|
90 |
|
languages/advanced-woo-search.pot
CHANGED
@@ -406,6 +406,12 @@ msgstr ""
|
|
406 |
msgid "Re-index required on change."
|
407 |
msgstr ""
|
408 |
|
|
|
|
|
|
|
|
|
|
|
|
|
409 |
#: includes/options.php:42
|
410 |
msgid "Use Google Analytics"
|
411 |
msgstr ""
|
406 |
msgid "Re-index required on change."
|
407 |
msgstr ""
|
408 |
|
409 |
+
msgid "Synonyms"
|
410 |
+
msgstr ""
|
411 |
+
|
412 |
+
msgid "Comma separated list of synonym words. Each group of synonyms must be on separated text line."
|
413 |
+
msgstr ""
|
414 |
+
|
415 |
#: includes/options.php:42
|
416 |
msgid "Use Google Analytics"
|
417 |
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: 5.2
|
7 |
-
Stable tag: 1.
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -17,7 +17,7 @@ Advanced Woo Search - powerful live search plugin for WooCommerce. Just start ty
|
|
17 |
= Main Features =
|
18 |
|
19 |
* **Products search** - Search across all your WooCommerce products
|
20 |
-
* **Search in** - Search in product **title**, **content**, **excerpt**, **categories**, **tags** and **sku**. Or just in some of them
|
21 |
* **Settings page** - User-friendly settings page with lot of options
|
22 |
* **Shortcode** and **widget** - Use shortcode and widget to place search box anywhere you want
|
23 |
* **Product image** - Each search result contains product image
|
@@ -29,7 +29,8 @@ Advanced Woo Search - powerful live search plugin for WooCommerce. Just start ty
|
|
29 |
* Supports **variable products**
|
30 |
* Support for your current **search page**. Plugin search results will be integrated to your current page layout.
|
31 |
* Automatically synchronize all products data. No need to re-index all content manually after avery change.
|
32 |
-
* Plurals support
|
|
|
33 |
* Diacritical marks support
|
34 |
* Google Analytics support
|
35 |
* Seamless integration option for easy replacing your current search form
|
@@ -103,6 +104,14 @@ Yep. This plugin is always compatible with the latest version of Woocommerce?
|
|
103 |
|
104 |
== Changelog ==
|
105 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
106 |
= 1.78 =
|
107 |
* Update - Better plurals search support
|
108 |
* Add - Divi theme seamless integration
|
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: 5.2
|
7 |
+
Stable tag: 1.79
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
17 |
= Main Features =
|
18 |
|
19 |
* **Products search** - Search across all your WooCommerce products
|
20 |
+
* **Search in** - Search in product **title**, **content**, **excerpt**, **categories**, **tags**, **ID** and **sku**. Or just in some of them
|
21 |
* **Settings page** - User-friendly settings page with lot of options
|
22 |
* **Shortcode** and **widget** - Use shortcode and widget to place search box anywhere you want
|
23 |
* **Product image** - Each search result contains product image
|
29 |
* Supports **variable products**
|
30 |
* Support for your current **search page**. Plugin search results will be integrated to your current page layout.
|
31 |
* Automatically synchronize all products data. No need to re-index all content manually after avery change.
|
32 |
+
* **Plurals** support
|
33 |
+
* **Synonyms** support
|
34 |
* Diacritical marks support
|
35 |
* Google Analytics support
|
36 |
* Seamless integration option for easy replacing your current search form
|
104 |
|
105 |
== Changelog ==
|
106 |
|
107 |
+
= 1.79 =
|
108 |
+
* Add - Synonyms support
|
109 |
+
* Add - Search by product ID
|
110 |
+
* Fix - Divi theme integration bug with double search form
|
111 |
+
* Fix - Bug with cache for search results
|
112 |
+
* Fix - Support for WooCommerce hooks
|
113 |
+
* Fix - Support for search exclude plugin
|
114 |
+
|
115 |
= 1.78 =
|
116 |
* Update - Better plurals search support
|
117 |
* Add - Divi theme seamless integration
|