所以,我工作的销售业务,刚刚建立了一个使用Wordpress与WooCommerce插件的网络商店。
我想能够做的是处理产品标签上的管理搜索,其中包含我们产品的所有信息。据我所知,普通搜索会对您放入框中的术语进行mySQL查询。我在函数中有一个代码片段。php允许它搜索元字段_sku。所以当我输入一个sku编号时,比如说。。。7026它将调出标题、描述或sku中包含7026的任何项目。
然而,我想能够进入说。。。。7026 4567 3883进入搜索框,它查询数据库以查找与这些数字中的任何一个匹配的任何产品(一个或关系搜索,而不是and),如果我现在键入该数字,我什么也得不到,因为它搜索的是标题、说明或sku中包含7026、4567和3883的任何产品,但我的目标是让搜索至少返回数据库中的3种产品,它们的SKU分别为7026、4567和3883
任何帮助将不胜感激。我试图让一个代码片段工作了几天,但运气不好。
在这篇文章中找到了答案:mutli sku管理搜索
帖子中的代码来自比约恩,非常感谢。
代码如下:
/**
* Use multiple sku's to find WOO products in wp-admin
* NOTE: Use '|' as a sku delimiter in your search query. Example: '1234|1235|1236'
**/
function woo_multiple_sku_search( $query_vars ) {
global $typenow;
global $wpdb;
global $pagenow;
if ( 'product' === $typenow && isset( $_GET['s'] ) && 'edit.php' === $pagenow ) {
$search_term = esc_sql( sanitize_text_field( $_GET['s'] ) );
if (strpos($search_term, '|') == false) return $query_vars;
$skus = explode('|',$search_term);
$meta_query = array(
'relation' => 'OR'
);
if(is_array($skus) && $skus) {
foreach($skus as $sku) {
$meta_query[] = array(
'key' => '_sku',
'value' => $sku,
'compare' => '='
);
}
}
$args = array(
'posts_per_page' => -1,
'post_type' => 'product',
'meta_query' => $meta_query
);
$posts = get_posts( $args );
if ( ! $posts ) return $query_vars;
foreach($posts as $post){
$query_vars['post__in'][] = $post->ID;
}
}
return $query_vars;
}
add_filter( 'request', 'woo_multiple_sku_search', 20 );