Привет, друзья! Сегодня я хочу рассказать о том, как можно искать товары в WooCommerce по SKU-коду. Как вы знаете, поиск товаров по SKU не работает в стандартной версии WooCommerce, и это может быть большой проблемой, особенно для B2B-магазинов.
Но не расстраивайтесь! В этой статье я покажу вам, как изменить запрос поиска товаров и использовать функцию wc_get_product_id_by_sku()
, которая поможет найти ID товара по его SKU-коду. Это очень удобно, когда вам нужно быстро найти конкретный товар в вашем магазине.
Для изменения запроса поиска товаров вам нужно будет использовать фильтр «posts_search
«, который позволяет изменять SQL-запрос поиска товаров. А чтобы найти ID товара по SKU, вы можете использовать функцию wc_get_product_id_by_sku()
, которая возвращает ID товара по его SKU-коду.
Вставьте данный код в файл functions.php вашей темы:
add_filter( 'posts_search', 'genius_product_search_by_sku', 9999, 2 );
function genius_product_search_by_sku( $search, $wp_query ) {
global $wpdb;
if ( is_admin() || ! is_search() || ! isset( $wp_query->query_vars['s'] ) || ( ! is_array( $wp_query->query_vars['post_type'] ) && $wp_query->query_vars['post_type'] !== "product" ) || ( is_array( $wp_query->query_vars['post_type'] ) && ! in_array( "product", $wp_query->query_vars['post_type'] ) ) ) return $search;
$product_id = wc_get_product_id_by_sku( $wp_query->query_vars['s'] );
if ( ! $product_id ) return $search;
$product = wc_get_product( $product_id );
if ( $product->is_type( 'variation' ) ) {
$product_id = $product->get_parent_id();
}
$search = str_replace( 'AND (((', "AND (({$wpdb->posts}.ID IN (" . $product_id . ")) OR ((", $search );
return $search;
}
Эти простые шаги помогут вам сделать поиск товаров по SKU более удобным и эффективным. Надеюсь, этот материал будет полезен для владельцев интернет-магазинов и поможет вам сделать свой бизнес более эффективным и удобным для покупателей. Успехов вам!