/**
* Get products based on search query with merchant filtering
*/
private function get_search_products($atts) {
global $wpdb;
$search_term = $atts['search'];
$search_mode = isset($atts['search_mode']) ? $atts['search_mode'] : 'comprehensive';
$product_ids = array();
// Mode 1: Basic WordPress search (fastest but limited)
if ($search_mode === 'basic') {
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
's' => $search_term,
'posts_per_page' => -1,
'fields' => 'ids'
);
$query = new WP_Query($args);
$product_ids = $query->posts;
}
// Mode 2: Title only search using LIKE
elseif ($search_mode === 'title_only') {
$product_ids = $wpdb->get_col($wpdb->prepare("
SELECT ID
FROM {$wpdb->posts}
WHERE post_type = 'product'
AND post_status = 'publish'
AND post_title LIKE %s
", '%' . $wpdb->esc_like($search_term) . '%'));
}
// Mode 3: Comprehensive search (default)
else {
// Direct SQL search for maximum compatibility
$search_like = '%' . $wpdb->esc_like($search_term) . '%';
// Search in titles and content
$title_content_ids = $wpdb->get_col($wpdb->prepare("
SELECT ID
FROM {$wpdb->posts}
WHERE post_type = 'product'
AND post_status = 'publish'
AND (post_title LIKE %s OR post_content LIKE %s OR post_excerpt LIKE %s)
", $search_like, $search_like, $search_like));
if (!empty($title_content_ids)) {
$product_ids = array_merge($product_ids, $title_content_ids);
}
// Search by SKU
$sku_ids = $wpdb->get_col($wpdb->prepare("
SELECT post_id
FROM {$wpdb->postmeta}
WHERE meta_key='_sku'
AND meta_value LIKE %s
", $search_like));
if (!empty($sku_ids)) {
$product_ids = array_merge($product_ids, $sku_ids);
}
// Search in product categories
$cat_ids = $wpdb->get_col($wpdb->prepare("
SELECT tr.object_id
FROM {$wpdb->term_relationships} tr
JOIN {$wpdb->term_taxonomy} tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
JOIN {$wpdb->terms} t ON tt.term_id = t.term_id
WHERE tt.taxonomy = 'product_cat'
AND t.name LIKE %s
", $search_like));
if (!empty($cat_ids)) {
$product_ids = array_merge($product_ids, $cat_ids);
}
}
// Remove duplicates
$product_ids = array_unique($product_ids);
if (empty($product_ids)) {
return array();
}
// Filter out hidden products
$visible_product_ids = array();
foreach ($product_ids as $product_id) {
$product = wc_get_product($product_id);
if ($product && $product->is_visible()) {
$visible_product
Claire's Leather Trousers Picks Archives - Page 8 of 11 - Claire's Picks
-
$184.00 Original price was: $184.00.$129.00Current price is: $129.00.
-
$116.00 Original price was: $116.00.$81.00Current price is: $81.00.
-
$1,125.00 Original price was: $1,125.00.$450.00Current price is: $450.00.
-
$193.00 Original price was: $193.00.$174.00Current price is: $174.00.
-
$1,200.00 Original price was: $1,200.00.$119.00Current price is: $119.00.
-
$59.00 Original price was: $59.00.$29.50Current price is: $29.50.
-
$235.00 Original price was: $235.00.$161.00Current price is: $161.00.
-
$339.00 Original price was: $339.00.$305.00Current price is: $305.00.
-
$1,199.00 Original price was: $1,199.00.$719.00Current price is: $719.00.
-
$2,154.00 Original price was: $2,154.00.$646.80Current price is: $646.80.
-
$24.92 Original price was: $24.92.$18.69Current price is: $18.69.
-
$38.95 Original price was: $38.95.$27.26Current price is: $27.26.
-
$38.95 Original price was: $38.95.$27.26Current price is: $27.26.
Go to top
Shopping Cart 0
No products in the basket.