javascript 无法使用WoocommerceAPI将子类别上传到Woocommerce

qv7cva1a  于 2023-04-10  发布在  Java
关注(0)|答案(1)|浏览(94)

我有一个问题,上传类别/子类别到一个woocommerce电子商店使用他们的Woocommerce API。我使用Javascript从后端获取数据,我没有任何其他问题,关于其他出口到网站,但当我尝试上传一个类别(我从后台得到一个类别列表,它也有一个hasSubcategory boolean,id,alias,name),但是当我尝试将其上传到站点时我无法传递类别/子类别的id,因为它不会上传它。如果我没有id,那么我将无法将产品设置为相应的类别(它们包含一个category_path,其中包含类别/子类别的id)。类别部分的片段:(我已经尝试了这么多的东西围绕它,并删除了所有的,所以它的jsut一个简短的代码). P.S:函数正在被调用!感谢您的任何建议!

async function createSubcategories(apiKey, category, WooCommerce) {
   const subCategories = await categories(apiKey, category);

  for (let j = 0; j < subCategories.subcategories.length; j++) {
    const values = subCategories.subcategories[j];

    const subCategoryData = {
       name: values.name,
       *CANT INCLUDE* id: values.id
     };

     await WooCommerce.post("products/categories", subCategoryData);
   }
 }

我可以添加/设置类别而不需要它们的值,但并不完全是我想要的,而且它也没有意义(没有一些值)。

xjreopfe

xjreopfe1#

你应该在WooCommerce.post的回调中获取WP API返回的真实的父类别id,并将其用作subCategoryData对象中parent键的值:

const WooCommerceAPI = require('woocommerce-api');

const apiKey = "***";
const apiSecret = "***";

const WooCommerce = new WooCommerceAPI({
  url: '<URL>',
  consumerKey: apiKey,
  consumerSecret: apiSecret,
  wpAPI: true,
  version: 'wc/v3'
});

const categoriesData = [
  { name: "Category 1", id: 1, hasSubcategory: true, subcategories: [ {     name: "Subcategory 1", id: 11 }, { name: "Subcategory 2", id: 12 } ] },
  { name: "Category 2", id: 2, hasSubcategory: false }
 ];

async function createCategories() {
    for (let i = 0; i < categoriesData.length; i++) {
      const category = categoriesData[i];
      const categoryData = {
        name: category.name
      };
      const createdCategory = await WooCommerce.post("products/categories", categoryData, function(err, data, res) {
        err ? console.error(err) : (() => {
          const parsedRes = JSON.parse(res);
          if (category.hasSubcategory) {
            createSubcategories(category, parsedRes.id);
          }
        })();
      });
    }
}
  async function createSubcategories(category, parentCategoryId) {
    for (let j = 0; j < category.subcategories.length; j++) {
      const subCategory = category.subcategories[j];
  
      const subCategoryData = {
        name: subCategory.name,
        parent: parentCategoryId
      };
  
      await WooCommerce.post("products/categories", subCategoryData);
    }
  }
  
  createCategories( WooCommerce);

相关问题