【问题标题】:Add parent and child categories from json to woocommerce via rest api通过rest api将父子类别从json添加到woocommerce
【发布时间】:2021-11-10 19:02:49
【问题描述】:

请帮我解决以下问题: 我从第三方供应商处获得了以下格式的 JSON 文件:

[{   
                "SKU": "427515"
                "name": "Frame",
                "description": "18*23",
                "barcode": "6907000061885",
                "price": 356, 
                "category": "Frame",
                "full_category": "souvenirs and gifts"
                "box_length": 23,
                "box_width": 19,
                "box_height": 2, 
}]

其中 - full_category 是父类别,而 category - 是子类别。 然后我通过PHP脚本将此JSON导入woocomerce,问题是我不明白如何为没有categoryID的父添加子类别? 前商店管理员给我留下了以下脚本:

function createProducts()
{
    $woocommerce = getWoocommerceConfig();
    $products = getJsonFromFile();

    $imgCounter = 0;
    foreach ($products as $product) {
        /*Chec sku before create the product */
        $productExist = checkProductBySku($product['sku']);       
        $categories = $product['categorias'];        
        $categoriesIds = array();     
        
        foreach ($categories as $category) {
            $categoriesIds[] = ['id' => getCategoryIdByName($category)];
        }
        $finalProduct = [
            'categories' => $categoriesIds,
        ];
       
    }
}
function createCategories()
{
    $categoryValues = getCategories();
    $woocommerce = getWoocommerceConfig();
    
    foreach ($categoryValues as $value) {
        if (!checkCategoryByname($value)) {
            $data = [
                'name' => $value
            ];
            $woocommerce->post('products/categories', $data);
        }
    }
}
function checkCategoryByName($categoryName)
{
    $woocommerce = getWoocommerceConfig();
    $categories = $woocommerce->get('products/categories');
    foreach ($categories as $category) {
        if ($category['name'] === $categoryName) {
            return true;
        }
    }
    return false;
}
function getCategories()
{
    $products = getJsonFromFile();
    $categories = array_column($products, 'categorias');

    foreach ($categories as $categoryItems) {
        foreach ($categoryItems as $categoryValue) {
            $categoryPlainValues[] = $categoryValue;
        }
    }
    $categoryList = array_unique($categoryPlainValues);
    return $categoryList;
}
function getCategoryIdByName($categoryName)
{
    $woocommerce = getWoocommerceConfig();
    $categories = $woocommerce->get('products/categories');
    foreach ($categories as $category) {
        if ($category['name'] == $categoryName) {
            return $category['id'];
        }
    }
}

我不太擅长 PHP,谁能告诉我如何更改它以从上面的 json 中获取父子类别。

【问题讨论】:

    标签: php json rest woocommerce


    【解决方案1】:

    您将需要类别 ID,但如果您知道名称或 slug,则可以通过 get_term_by 轻松获得。这将返回一个包含 ID 的 WP_Term 对象。

    这将为您提供名为“新闻”的类别的类别 ID:

    $categoryId = get_term_by('name', 'news', 'category')->term_id;
    

    在您的脚本中,假设您的变量 $category 是类别名称,请更改此位:

    foreach ($categories as $category) {
        $categoriesIds[] = ['id' => get_term_by('name', 'news', 'category')->term_id];
    }
    

    foreach ($categories as $category) {
        $categoriesIds[] = ['id' => get_term_by('name', $category, 'category')->term_id;
    }
    

    如果你觉得我的回答对你有帮助,你可以accept my answer

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-03
      • 2018-04-10
      • 2021-08-08
      • 2022-12-15
      • 1970-01-01
      • 1970-01-01
      • 2015-06-21
      • 1970-01-01
      相关资源
      最近更新 更多