优化WooCommerce后台添加商品模态框搜索:仅匹配商品标题
WooCommerce后台订单创建时商品搜索仅匹配标题的实现方案
不需要直接重写woocommerce_json_search_products_and_variations核心函数,通过WooCommerce提供的钩子就能修改搜索逻辑,让后台创建订单时的商品搜索只匹配标题,忽略描述内容。
实现代码
将以下代码添加到当前主题的functions.php文件或自定义插件中:
add_filter( 'woocommerce_product_search_query', 'restrict_product_search_to_title_only', 10, 2 ); function restrict_product_search_to_title_only( $search_query, $query_vars ) { // 仅针对后台创建订单的目标AJAX请求生效 if ( ! is_admin() || ! isset( $_POST['action'] ) || $_POST['action'] !== 'woocommerce_json_search_products_and_variations' ) { return $search_query; } $search_term = isset( $query_vars['s'] ) ? $query_vars['s'] : ''; if ( empty( $search_term ) ) { return $search_query; } global $wpdb; $like_term = '%' . $wpdb->esc_like( $search_term ) . '%'; // 重写搜索条件,仅匹配商品标题 $search_query = $wpdb->prepare( "AND {$wpdb->posts}.post_title LIKE %s", $like_term ); return $search_query; }
代码说明
- 请求校验:只对后台的
woocommerce_json_search_products_and_variationsAJAX请求生效,不会影响前台或其他后台搜索场景 - 逻辑替换:默认搜索会同时匹配商品标题、描述、摘要,这里直接将查询条件改为仅匹配
post_title字段 - 变体兼容:因为产品变体的标题关联父产品,所以该逻辑会自动覆盖变体的匹配规则
注意事项
- 修改代码前备份好主题或插件文件
- 添加代码后,进入后台创建订单页面测试搜索功能,确认只有标题包含关键词的商品才会出现在结果中
内容的提问来源于stack exchange,提问作者basicwp
相关产品推荐
相关产品推荐

