You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WP All Import使用教程:如何将WooCommerce产品SKU替换为对应产品ID

实现方案

str_replace属于静态字符串替换,需要提前穷举所有SKU和对应产品ID的映射关系才能配置,维护成本很高,更推荐直接调用WooCommerce原生的SKU查询方法实现动态转换,代码示例如下:

如果你使用WP All Import等第三方导入插件

在自定义字段的导入配置中,选择「通过PHP函数处理导入值」,先添加以下自定义函数:

function convert_sku_list_to_pid_list( $sku_string ) {
    // 拆分|分隔的SKU,同时去除前后空格和空值
    $sku_list = array_map( 'trim', explode( '|', $sku_string ) );
    $pid_list = [];

    foreach ( $sku_list as $sku ) {
        if ( empty( $sku ) ) continue;
        // 调用WooCommerce内置方法通过SKU获取产品ID
        $product_id = wc_get_product_id_by_sku( $sku );
        if ( $product_id ) {
            $pid_list[] = $product_id;
        }
    }

    // 若需要输出|分隔的ID字符串,保留下行
    return implode( '|', $pid_list );
    // 若需要数组格式存储到自定义字段,替换为下行
    // return $pid_list;
}

然后在对应自定义字段的导入值位置,传入你的feed字段即可:[convert_sku_list_to_pid_list({metaparent_sku[1]})]

如果你自己编写导入脚本

可以直接参考以下逻辑处理:

// 确保WooCommerce核心函数已加载
if ( ! function_exists( 'wc_get_product_id_by_sku' ) ) {
    return;
}

// 获取feed中的SKU字符串
$feed_sku_value = 'BDCD7 | BDAUX | BDCA1 | ADUP89';
$sku_array = array_map( 'trim', explode( '|', $feed_sku_value ) );
$matched_pid_array = [];

foreach ( $sku_array as $single_sku ) {
    $pid = wc_get_product_id_by_sku( $single_sku );
    if ( $pid ) {
        $matched_pid_array[] = $pid;
    }
}

// 写入目标自定义字段,示例字段名为custom_product_rel_id
update_post_meta( $current_post_id, 'custom_product_rel_id', implode( '|', $matched_pid_array ) );

补充说明

  • 如果你用的导入插件自带lookup映射功能,也可以提前导出站点全量SKU和产品ID的对应表,配置lookup规则实现转换,不过这种方式需要在新增产品后同步更新映射表,灵活性不如动态函数方案。
  • 请提前确认站点内所有产品SKU全局唯一,否则wc_get_product_id_by_sku只会返回第一个匹配到的产品ID。

内容的提问来源于stack exchange,提问作者Coer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 09:09:02