Як зробити пошук по артикулам у Вукомерс (WooCommerce).

Пошуковий механізм Вукомерс (WooCommerce) ігнорує артикули. Якщо відвідувач захоче знайти товар за його артикулом, він нічого не вийде. Якщо на вашу думку, таке категорично неприпустимо і це потрібно виправити, нижче є рішення.

Проблема не нова, існує багато якихось "диких" рішень з установкою плагінів, купою коду та іншим. Насправді, завдання вирішується дуже просто за допомогою функції

wc_get_product_id_by_sku()
Потрібно просто додати невеликий фрагмент коду до файлу функцій активної теми (functions.php) або (правильніше) створити плагін та впровадити код туди.

add_filter( 'posts_search', 'dnln_product_search_by_sku', 9999, 2 );

function dnln_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;
   $search = str_replace( 'AND (((', "AND (({$wpdb->posts}.ID IN (" . $product_id . ")) OR ((", $search );
   return $search;
}
Готово.

Отправить комментарий

Добавлять новые комментарии запрещено.*

Новые Старые