【问题标题】:wpallimport - how do I replace sku with product id?wpallimport - 如何用产品 ID 替换 sku?
【发布时间】:2021-11-26 22:15:52
【问题描述】:

我使用制造商的提要上传到 WooCommerce 自定义字段。 自定义字段需要产品 ID 作为输入,但提要不知道这一点,因为它是由 WooCommerce 创建的。 我使用 SKU 作为关键字来比较现有产品和 Feed。

导入的字段名为{metaparent_sku[1]},内容有多个值,用|分隔, 例如: BDCD7 | BDAUX | BDCA1 | ADUP89 这些是独特的产品 sku,指的是 WooCommerce 中已有的产品。

我想做的是用相应的产品 ID 值替换 sku 值,因为它已经存在于 WooCommerce 中。

我一直在尝试使用 str_replace,但不知道如何设置它,如果可能的话。或者我应该使用查找? 如果有人可以提供一些示例代码,我将不胜感激。

【问题讨论】:

    标签: woocommerce wpallimport


    【解决方案1】:

    通过 sku 字段查找产品 ID。

    [wc_get_product_id_by_sku({sku[1]})]
    

    所以你的情况是:

    [wc_get_product_id_by_sku({metaparent_sku[1]})]
    

    当您在一个字段中有多个 sku 时,请创建自定义函数。 将以下函数放在Function Editor中。

    /**
     * Find product id(s) by sku(s)
     * @param string $sku
     * @return string with product id(s)
     */
    function wp_all_import_get_product_ids_by_sku($sku, $seperator = "|") {
        // define empty $product_ids
        $product_ids = array();
        // remove spaces from sku
        $sku  = str_replace(" ", "", $sku);
        // convert to array
        $skus = explode($seperator, $sku);
        // find product ids
        foreach ($skus as $sku) {
            $product_ids[] = wc_get_product_id_by_sku($sku);
        }
        // return product ids
        return implode(" | ", $product_ids);
    }
    

    那就这样用吧

    [wp_all_import_get_product_ids_by_sku({metaparent_sku[1]})]
    

    【讨论】:

    • 哇,非常感谢,它有效!
    • 对不起,我的热情有点太快了 ;-) 只有在导入的字段中有一个值时它才有效。如果有一个数组,则导入字段中的最终结果如下例所示:5358|5360|5424 所以它基本上将管道(竖线)符号作为值的一部分导入。它与从 sku 中删除空格有关吗?没有空格 wpallimport 显然将管道 (|) 视为值的一部分。也许转换为数组后应该重新引入空格?
    • 所以必须是5358 | 5360 | 5424?我已经更新了我的答案,这有效吗?在退货行上,您可以更改 product_ids 之间的分隔符。
    • 谢谢,它有效,非常感谢您的快速帮助!
    • 不客气! :)
    猜你喜欢
    • 2014-07-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2021-06-04
    • 2016-03-04
    相关资源
    最近更新 更多