使用WPAllImport导入多供应商同款商品时如何仅导入最低价商品
WP All Import多供应商同款商品仅导入最低价条目的解决方案
方案1:导入前预处理数据源(无代码,优先推荐)
- 先将所有供应商的XML数据源统一转换为CSV格式,可使用本地XML转CSV工具批量处理
- 统一所有数据源的字段映射规则,确保Manufacturer SKU、商品售价字段格式完全一致:比如SKU统一大小写、价格统一保留2位小数、币种统一
- 按Manufacturer SKU分组筛选,每组仅保留价格最低的1条商品数据,删除其余同SKU的冗余条目
- 将处理完成的CSV文件作为WP All Import的导入源,照常设置Manufacturer SKU为唯一识别符执行导入即可
方案2:借助WP All Import钩子实现导入过程自动筛选(适合定期自动同步数据源的场景)
利用WP All Import原生提供的pmxi_before_post_import钩子,在每次导入单条商品前校验价格优先级,操作步骤如下:
- 在WordPress主题的
functions.php文件,或自定义代码片段插件中添加如下代码:
add_filter('pmxi_before_post_import', 'filter_lowest_price_product', 10, 3); function filter_lowest_price_product($import_options, $article, $import_id) { // 替换为你的实际导入任务ID,可配置多个 $allowed_import_ids = [1, 2]; if (!in_array($import_id, $allowed_import_ids)) return $import_options; // 替换为你的数据源中Manufacturer SKU对应的字段名 $current_sku = trim($article['manufacturer_sku']); // 替换为你的数据源中商品价格对应的字段名 $current_price = (float)trim($article['product_price']); global $wpdb; // 查询同SKU已入库的商品价格 $existing_price = $wpdb->get_var($wpdb->prepare( "SELECT meta_value FROM {$wpdb->postmeta} WHERE meta_key = '_regular_price' AND post_id IN ( SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key = 'manufacturer_sku' AND meta_value = %s )", $current_sku )); // 已存在更低或等价商品,跳过当前导入条目 if ($existing_price && (float)$existing_price <= $current_price) { $import_options['options']['is_skip_post'] = true; } // 当前条目价格更低,允许导入覆盖旧条目 return $import_options; }
- 代码配置说明:
- 需将
$allowed_import_ids数组值替换为你实际要应用该规则的导入任务ID - 需将代码中的
manufacturer_sku、product_price替换为你数据源中对应的字段名称 - 若采用分批导入的方式,建议优先导入供应商报价偏高的数据源,再导入报价偏低的数据源,减少导入过程的数据覆盖操作
- 需将
方案3:扩展WP All Import重复项规则(轻量配置,适合小规模导入)
- 进入对应导入任务的「重复项检测设置」页,选择Manufacturer SKU作为重复识别依据
- 重复处理规则选择「检测到重复时仅更新指定字段」
- 针对价格字段添加更新判断逻辑:仅当新导入的价格低于已存储的商品价格时,才更新价格及对应的供应商信息,其余字段保持原有值不变
内容的提问来源于stack exchange,提问作者Carel Kruger
相关产品推荐
相关产品推荐

