作为产品代码的可变品SKU

时间:2021-04-03 作者:Chuck B

我正在为我的公司开发一个新网站。我们有各种各样的产品。每个变体都有自己的SKU编号。选择产品时,购物车中会显示正确的商品和正确的SKU(分配给变体的SKU)。

我正在使用另一个插件,为我创建托管订单,然后可以下载到我们的ERP系统,所有这些都可以正常工作,除了一件事。传递到托管订单的SKU是父项SKU,而不是变体。

我需要一种方法来确定产品是否有变体,并且变体SKU成为其他插件拾取的产品SKU。我试过if/else 新插件中的函数,但它没有更改结果。

我相信创建托管订单的代码就是这个代码片段。

        $items = $this->order->get_items();
        // Line items can be added to a Transaction individually or as an array
        $lineItems = array();
        $itemcount = 0;
        foreach($items as $item_id => $item_data) {
            array_push($lineItems, new ConnectLineItem);
            $product = wc_get_product($item_data[\'product_id\']);
            $lineItems[$itemcount]->ProductCode = $product->get_sku();
            $lineItems[$itemcount]->Category = "";
            $lineItems[$itemcount]->Description = substr($item_data[\'name\'], 0, 50);
            $lineItems[$itemcount]->Quantity = $item_data[\'quantity\'];
            $lineItems[$itemcount]->UnitOfMeasure = "PCE";
            $lineItems[$itemcount]->LineAmount = $item_data[\'total\'];
            $lineItems[$itemcount]->UnitPrice = $item_data[\'total\'] / $item_data[\'quantity\'];
            $lineItems[$itemcount]->LineTaxAmount = $item_data[\'subtotal_tax\'];
            $lineItems[$itemcount]->LineDiscountAmount = "0.00";
            $itemcount = $itemcount + 1;
        }
        $trans->addLineItemArray($lineItems);
诚然,我是这方面的新手,所以任何建议都会很有帮助。

1 个回复
SO网友:Chuck B

因此,我能够得到我正在寻找的结果,但在这样做的过程中,php错误日志中出现了一个错误。在我认为需要设置的地方,我在上面显示的部分中添加了以下代码。代码如下。

        $items = $this->order->get_items();
        // Line items can be added to a Transaction individually or as an array
        $lineItems = array();
        $itemcount = 0;
        foreach($items as $item_id => $item_data) {
            array_push($lineItems, new ConnectLineItem);
            ***$product_variation_id = $item_data[\'variation_id\'];
            if ($product_variation_id) {
              $product = wc_get_product($item_data[\'variation_id\']);}
              else {
              $product = wc_get_product($item_data[\'product_id\']); }***  
            $lineItems[$itemcount]->ProductCode = $product->get_sku();
            $lineItems[$itemcount]->Category = "";
            $lineItems[$itemcount]->Description = substr($item_data[\'name\'], 0, 50);
            $lineItems[$itemcount]->Quantity = $item_data[\'quantity\'];
            $lineItems[$itemcount]->UnitOfMeasure = "PCE";
            $lineItems[$itemcount]->LineAmount = $item_data[\'total\'];
            $lineItems[$itemcount]->UnitPrice = $item_data[\'total\'] / $item_data[\'quantity\'];
            $lineItems[$itemcount]->LineTaxAmount = $item_data[\'subtotal_tax\'];
            $lineItems[$itemcount]->LineDiscountAmount = "0.00";
            $itemcount = $itemcount + 1;
我收到的错误消息是:[2021 4月6日21:24:16 UTC]状态调用不正确。不应直接访问订单属性。回溯:require(\'wp-blog-header.php\')、require\\u once(\'wp-includes/template loader.php\')、do\\u action(\'template\\u redirect\')、wp\\u Hook->;do\\u action,WP\\u Hook->;apply\\u filters,WC\\u AJAX::do\\u WC\\u AJAX,do\\u action(\'WC\\u AJAX\\u checkout\'),WP\\u Hook->;do\\u action,WP\\u Hook->;应用\\u筛选器,WC\\u AJAX::签出,WC\\u签出->;process\\u checkout,WC\\u checkout->;process\\u order\\u payment,WC\\u CL\\u CONNECT\\u Gateway->;process\\u payment,WC\\u CL\\u CONNECT\\u Gateway->;do\\u order\\u complete\\u tasks,WC\\u Abstract\\u Legacy\\u order->__get,wc\\u do\\u it\\u做错了。此消息是在版本3.0中添加的。

如何解决此问题。

相关推荐

将php放在/wp-content/ploads目录中不安全吗?

这个问题很直截了当,但我会提供所需的任何澄清。我这样问的原因是:我创建了一个儿童主题custom-functions.php 文件这允许开发人员在不编辑子主题的情况下自定义站点。我知道这就是儿童主题的目的,但为了简洁起见,我不会深入探讨所有这些背后的原因。我把custom-functions.php 在里面/wp-content/uploads/customizations. 这是安全风险吗?如果是这样的话,还有什么更好的地方可以放呢。我不想把它放在我的子主题中,因为当主题更新时,它会被覆盖。