Hướng dẫn tìm kiếm SKU trong form Woocommerce Search

Written by admin
Posted on Fri, 03/26/2021 - 11:07
94 views

Share Everywhere

Table of contents

Gần đây, một khách hàng đã yêu cầu thêm sku vào tìm kiếm sản phẩm woocommerce trên trang web của anh ấy. Anh ấy muốn khách hàng của mình dễ dàng tìm thấy sản phẩm bằng cách nhập sku trên thanh tìm kiếm sản phẩm.

Tôi đã tìm thấy hầu hết mã trong codex ở đây nhưng nó không hoạt động tốt. Vì vậy, tôi đã phải thực hiện một sự điều chỉnh. Đây là phiên bản hoàn thiện. Đặt nó vào tệp functions.php của bạn hoặc tạo một plugin đơn giản.

/* Add sku to product search */
function az_pre_get_posts( $query ) {
// conditions - change the post type clause if you're not searching woocommerce or 'product' post type
if ( is_admin() || ! $query->is_main_query() || ! $query->is_search() || ! get_query_var('post_type')=='product' ){
   return;
}
add_filter('posts_join', 'az_search_join' );
add_filter('posts_where', 'az_search_where' );
add_filter('posts_groupby', 'az_search_groupby' );

}
add_action( 'pre_get_posts', 'az_pre_get_posts' );

function az_search_join( $join ){
   global $wpdb;
   $join .= " LEFT JOIN $wpdb->postmeta gm ON (" . 
   $wpdb->posts . ".ID = gm.post_id AND gm.meta_key='_sku')"; // change to your meta key if not woo

   return $join;
}

function az_search_where( $where ){
   global $wpdb;
   $where = preg_replace(
     "/\(\s*{$wpdb->posts}.post_title\s+LIKE\s*(\'[^\']+\')\s*\)/",
     "({$wpdb->posts}.post_title LIKE $1) OR (gm.meta_value LIKE $1)", $where );
   return $where;
}
/* grouping by id to make sure no dupes */
function az_search_groupby( $groupby ){
   global $wpdb;
   $mygroupby = "{$wpdb->posts}.ID";
   if( preg_match( "/$mygroupby/", $groupby )) {
     // grouping we need is already there
     return $groupby;
   }
   if( !strlen(trim($groupby))) {
      // groupby was empty, use ours
      return $mygroupby;
   }
   // wasn't empty, append ours
   return $groupby . ", " . $mygroupby;
}

Tôi hy vọng điều này sẽ giúp bạn tạo tìm kiếm sản phẩm tốt hơn cho Woocommerce. Như bạn có thể thấy, mã này có thể được điều chỉnh khi cần thiết để bao gồm các siêu dữ liệu khác. Hãy liên hệ với chúng tôi nếu bạn có thắc mắc.

Add new comment

Restricted HTML

  • Allowed HTML tags: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Lines and paragraphs break automatically.
  • Web page addresses and email addresses turn into links automatically.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
3 + 5 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.
Profile picture for user admin
Câu nói tâm đắc: “Điều tuyệt với nhất trong cuộc sống là làm được những việc mà người khác tin là không thể!”