WordPress & Woocommerce 独立站启用SKU搜索功能
默认情况,woocommerce产品模块的SKU属性是不参与前台的搜索功能,【如果有的话那就说明你用的模版已经解决了这个问题】,以下代码可以修复这个问题:
// 启用woocommerce的SKU搜索功能 function search_by_sku( $search, $query_vars ) { global $wpdb; if ( isset( $query_vars->query['s'] ) && !empty( $query_vars->query['s'] ) ) { $search_sku = $query_vars->query['s']; $args = array( 'posts_per_page' => -1, 'post_type' => array('product', 'product_variation'), 'meta_query' => array( array( 'key' => '_sku', 'value' => $search_sku, 'compare' => 'LIKE' ) ) ); $posts = get_posts( $args ); if ( empty( $posts ) ) return $search; $get_post_ids = array(); foreach ( $posts as $post ) { if ( $post->post_type == 'product_variation' ) { $get_post_ids[] = $post->post_parent; } else { $get_post_ids[] = $post->ID; } } if ( sizeof( $get_post_ids ) > 0 ) { $search = str_replace( 'AND (((', "AND ((({$wpdb->posts}.ID IN (" . implode( ',', array_unique($get_post_ids) ) . ")) OR (", $search ); } } return $search; } add_filter( 'posts_search', 'search_by_sku', 999, 2 );