1

产品变体不起作用,woocommerce 版本 4.6.2 使用zapiex API 获取 aliexpress 产品。

前端截图 在此处输入图像描述

后台截图 在此处输入图像描述

代码用于创建具有属性和变体的新产品。一切都工作正常,除了变化没有正确设置。请检查前端和后端的屏幕截图。您将从 zapiex 文档中找到 API json 示例速卖通数据。

任何帮助表示赞赏。

代码:

$response = $data['data'];
$shipping = $response["shipping"]["carriers"];

if ($response["hasVariations"]){
    $objProduct = new WC_Product_Variable();
} else{
    $objProduct = new WC_Product();
}

$objProduct->set_name($response["title"]);
$objProduct->set_status("publish");  // can be publish,draft or any wordpress post status
$objProduct->set_catalog_visibility('visible'); // add the product visibility status
$objProduct->set_description($response["htmlDescription"]);
$objProduct->set_sku($response["productId"]); //can be blank in case you don't have sku, but You can't add duplicate sku's
$objProduct->set_manage_stock(true); // true or false
$objProduct->set_stock_quantity($response["totalStock"]);
$objProduct->set_stock_status('instock'); // in stock or out of stock value
$objProduct->set_backorders('no');
$objProduct->set_reviews_allowed(true);
$objProduct->set_sold_individually(false);

if($response['hasSinglePrice']){
    $objProduct->set_regular_price($response['price']['web']['originalPrice']['value']); 
    if($response['price']['web']['hasDiscount']){
        $objProduct->set_sale_price($response['price']['web']['discountedPrice']['value']);
    }
}


$objProduct->set_category_ids(array(recentSearchCatID()));
// set attributes
$attributes= array();
$i= 0;
if($response['hasAttributes']){
    
    foreach($response["attributes"] as $attr){
        $att = array('id'=>0, 'name'=>$attr['name'], 'options'=>array($attr['value']['name']), 'visible'=> true, 'position'=>$i, 'variation'=>false );
        $attributes[]= create_attributes($att);
        $i++;
    }

}
if($response['hasProperties']){
    
    foreach($response["properties"] as $attr){
        
        $att = array('id'=>0, 'name'=>$attr['name'], 'visible'=> true, 'position'=>$i, 'variation'=>true );
        $options = array();
        foreach($attr['values'] as $opt){
            $options[]=$opt['name'];
        }
        $att['options']=$options;
        $attributes[]= create_attributes($att);
        $i++;
    }
    
}

$objProduct->set_attributes( $attributes );
$product_id = $objProduct->save();
if($response['hasVariations']) {
    foreach($response['variations'] as $vp) {
        $variation = new WC_Product_Variation();
        $variation->set_parent_id( $product_id );
        $props = array();
        foreach($vp['properties'] as $vpp){
            $props['pa_'.wc_sanitize_taxonomy_name($vpp['name'])] = wc_sanitize_taxonomy_name($vpp['value']['name']);
        }
        
        $variation->set_attributes($props);
        $variation->set_status('publish');
        $variation->set_sku($vp['sku']);
        
        if (array_key_exists("price",$vp)){
            $regularPrice = round($vp["price"]["web"]["originalPrice"]["value"]);
            $variation->set_regular_price($regularPrice);
            $discountPrice = NULL;
            if ($vp["price"]["web"]["hasDiscount"]){
                $discountPrice = round($vp["price"]["web"]["discountedPrice"]["value"]);
                $variation->set_sale_price($discountPrice);
            }
        }
        
        $variation->set_stock_status();
        $variation->set_stock_quantity(10);
        $variation->save();
        $product = wc_get_product($product_id);
        $product->save();
    }                    
    
}

exit();
4

0 回答 0