Skip to content

Commit 66a47af

Browse files
committed
Urgent Fix: product and user search not returning results for some users
1 parent 1fed0bb commit 66a47af

File tree

5 files changed

+38
-38
lines changed

5 files changed

+38
-38
lines changed

includes/API/Customers.php

Lines changed: 28 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -193,55 +193,52 @@ public function customer_query( array $prepared_args, WP_REST_Request $request )
193193
return $prepared_args;
194194
}
195195

196-
public function modify_user_query( $user_query ) {
197-
if ( isset( $user_query->query_vars['_search_term'] ) && ! empty( $user_query->query_vars['_search_term'] ) ) {
198-
$search_term = $user_query->query_vars['_search_term'];
196+
public function modify_user_query( $user_query ) {
197+
if ( isset( $user_query->query_vars['_search_term'] ) && ! empty( $user_query->query_vars['_search_term'] ) ) {
198+
$search_term = $user_query->query_vars['_search_term'];
199199

200-
global $wpdb;
200+
global $wpdb;
201201

202-
$like = '%' . $wpdb->esc_like( $search_term ) . '%';
202+
$like_term = '%' . $wpdb->esc_like( $search_term ) . '%';
203203

204-
$meta_conditions = "
205-
( wp_usermeta.meta_key = '_woocommerce_pos_uuid' AND wp_usermeta.meta_value LIKE '{$like}' )
204+
$meta_conditions = $wpdb->prepare(
205+
"({$wpdb->usermeta}.meta_key = '_woocommerce_pos_uuid' AND {$wpdb->usermeta}.meta_value LIKE %s)
206206
OR
207-
( wp_usermeta.meta_key = 'first_name' AND wp_usermeta.meta_value LIKE '{$like}' )
207+
({$wpdb->usermeta}.meta_key = 'first_name' AND {$wpdb->usermeta}.meta_value LIKE %s)
208208
OR
209-
( wp_usermeta.meta_key = 'last_name' AND wp_usermeta.meta_value LIKE '{$like}' )
209+
({$wpdb->usermeta}.meta_key = 'last_name' AND {$wpdb->usermeta}.meta_value LIKE %s)
210210
OR
211-
( wp_usermeta.meta_key = 'billing_first_name' AND wp_usermeta.meta_value LIKE '{$like}' )
211+
({$wpdb->usermeta}.meta_key = 'billing_first_name' AND {$wpdb->usermeta}.meta_value LIKE %s)
212212
OR
213-
( wp_usermeta.meta_key = 'billing_last_name' AND wp_usermeta.meta_value LIKE '{$like}' )
213+
({$wpdb->usermeta}.meta_key = 'billing_last_name' AND {$wpdb->usermeta}.meta_value LIKE %s)
214214
OR
215-
( wp_usermeta.meta_key = 'billing_email' AND wp_usermeta.meta_value LIKE '{$like}' )
215+
({$wpdb->usermeta}.meta_key = 'billing_email' AND {$wpdb->usermeta}.meta_value LIKE %s)
216216
OR
217-
( wp_usermeta.meta_key = 'billing_company' AND wp_usermeta.meta_value LIKE '{$like}' )
217+
({$wpdb->usermeta}.meta_key = 'billing_company' AND {$wpdb->usermeta}.meta_value LIKE %s)
218218
OR
219-
( wp_usermeta.meta_key = 'billing_phone' AND wp_usermeta.meta_value LIKE '{$like}' )
220-
";
219+
({$wpdb->usermeta}.meta_key = 'billing_phone' AND {$wpdb->usermeta}.meta_value LIKE %s)",
220+
$like_term, $like_term, $like_term, $like_term, $like_term, $like_term, $like_term, $like_term
221+
);
221222

222-
// Add conditions for user email, username, and ID
223-
$user_conditions = "
224-
( {$wpdb->users}.user_email LIKE '{$like}' )
223+
$user_conditions = $wpdb->prepare(
224+
"({$wpdb->users}.user_email LIKE %s)
225225
OR
226-
( {$wpdb->users}.user_login LIKE '{$like}' )
226+
({$wpdb->users}.user_login LIKE %s)
227227
OR
228-
( {$wpdb->users}.ID = '{$search_term}' )
229-
";
228+
({$wpdb->users}.ID = %d)",
229+
$like_term, $like_term, $search_term
230+
);
230231

231-
// Combine meta_conditions and user_conditions
232-
$all_conditions = "({$meta_conditions}) OR ({$user_conditions})";
233-
234-
// Append the all_conditions to the original query_where
235-
$user_query->query_where .= " AND ( {$all_conditions} )";
236-
237-
remove_action( 'pre_user_query', array( $this, 'modify_user_query' ) );
238-
}
239-
}
232+
$all_conditions = "($meta_conditions) OR ($user_conditions)";
240233

234+
$user_query->query_where .= " AND ( {$all_conditions} )";
241235

236+
remove_action( 'pre_user_query', array( $this, 'modify_user_query' ) );
237+
}
238+
}
242239

243240

244-
/**
241+
/**
245242
* Returns array of all customer ids.
246243
*
247244
* Note: user queries are a little more complicated than post queries, for example,

includes/API/Products.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -343,12 +343,12 @@ public function posts_search( string $search, WP_Query $wp_query ): string {
343343
$search_array[] = $wpdb->prepare( "{$wpdb->posts}.post_title LIKE %s", $n . $like_term . $n );
344344

345345
// Search in _sku field
346-
$search_array[] = $wpdb->prepare( "(wp_postmeta.meta_key = '_sku' AND wp_postmeta.meta_value LIKE %s)", $n . $like_term . $n );
346+
$search_array[] = $wpdb->prepare( "({$wpdb->postmeta}.meta_key = '_sku' AND {$wpdb->postmeta}.meta_value LIKE %s)", $n . $like_term . $n );
347347

348348
// Search in barcode field
349349
$barcode_field = woocommerce_pos_get_settings( 'general', 'barcode_field' );
350350
if ( $barcode_field !== '_sku' ) {
351-
$search_array[] = $wpdb->prepare( '(wp_postmeta.meta_key = %s AND wp_postmeta.meta_value LIKE %s)', $barcode_field, $n . $like_term . $n );
351+
$search_array[] = $wpdb->prepare( "({$wpdb->postmeta}.meta_key = %s AND {$wpdb->postmeta}.meta_value LIKE %s)", $barcode_field, $n . $like_term . $n );
352352
}
353353
}
354354

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@wcpos/woocommerce-pos",
3-
"version": "1.3.10",
3+
"version": "1.3.11",
44
"description": "A simple front-end for taking WooCommerce orders at the Point of Sale.",
55
"main": "index.js",
66
"workspaces": {

readme.txt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Contributors: kilbot
33
Tags: cart, e-commerce, ecommerce, inventory, point-of-sale, pos, sales, sell, shop, shopify, store, vend, woocommerce, wordpress-ecommerce
44
Requires at least: 5.6 & WooCommerce 5.3
55
Tested up to: 6.3
6-
Stable tag: 1.3.10
6+
Stable tag: 1.3.11
77
License: GPL-3.0
88
License URI: http://www.gnu.org/licenses/gpl-3.0.html
99

@@ -63,6 +63,9 @@ There is more information on our website at [https://wcpos.com](https://wcpos.co
6363

6464
== Changelog ==
6565

66+
= 1.3.11 - 2023/09/27 =
67+
* Urgent Fix: product and user search not returning results for some users
68+
6669
= 1.3.10 - 2023/08/29 =
6770
* Urgent Fix: pages with slug starting with 'pos' redirecting to the POS page
6871

woocommerce-pos.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@
33
* Plugin Name: WooCommerce POS
44
* Plugin URI: https://wordpress.org/plugins/woocommerce-pos/
55
* Description: A simple front-end for taking WooCommerce orders at the Point of Sale. Requires <a href="http://wordpress.org/plugins/woocommerce/">WooCommerce</a>.
6-
* Version: 1.3.10
6+
* Version: 1.3.11
77
* Author: kilbot
88
* Author URI: http://wcpos.com
99
* Text Domain: woocommerce-pos
1010
* License: GPL-3.0+
1111
* License URI: http://www.gnu.org/licenses/gpl-3.0.txt
1212
* Domain Path: /languages
13-
* WC tested up to: 7.9
13+
* WC tested up to: 8.1
1414
* WC requires at least: 5.3
1515
*
1616
* @author Paul Kilmurray <[email protected]>
@@ -24,7 +24,7 @@
2424
use function define;
2525

2626
// Define plugin constants.
27-
const VERSION = '1.3.10';
27+
const VERSION = '1.3.11';
2828
const PLUGIN_NAME = 'woocommerce-pos';
2929
const SHORT_NAME = 'wcpos';
3030
define( __NAMESPACE__ . '\PLUGIN_FILE', plugin_basename( __FILE__ ) ); // 'woocommerce-pos/woocommerce-pos.php'

0 commit comments

Comments
 (0)