1

我想在 Woocommerce 中导入一个带有多个关联图像的大型 XML 文件。

我有3个选择:

  1. 通过 WP 所有导入插件下载它。我试过了,尽管有一台顶级服务器,但它还是崩溃了。我对这个解决方案不满意,除非我找到一种方法通过属性在产品库中插入图像并将图像链接到 CDN。我只能想象维护是一场噩梦。

  2. 使用 wp wc cli:通过 ruby​​/python 脚本调用 XML 并引入所有相应的值。从未尝试过。

  3. 直接导入我的数据库:我听说 Woocommerce 很棘手,因为有很多关联。

    在踏上这段旅程之前,欢迎任何人发表评论。

4

1 回答 1

3

根据我的经验,对我来说最简单的方法是使用命令行脚本来利用 Woocommerce REST API 来处理产品的创建。对于图像,您需要使用标准的 Wordpress REST API,它不是最好的文档。

使用这条路线,您肯定需要编写一个脚本来解析您的 XML,然后将数据传递给 REST API 以在商店中创建产品。

我推荐以下创建产品的方法:

  1. 对数据进行初始第一次传递以创建全局属性、分类法、类别等。您需要先执行此操作,因为您需要在 CRUD 调用中发送的许多产品数据使用 ID职位、分类等

  2. 创建您的产品。您将使用第 1 步中设置的数据来分配变体和类别。如果您正在处理可变产品和产品变体,请确保首先创建父级并分配变体元数据。

  3. 执行图像上传部分。您将能够使用 WP REST API 创建媒体库条目,然后使用 WC REST API 更新产品帖子。

根据您拥有的产品数量,您可能希望考虑在导入脚本中添加一些功能来设置开始、停止和偏移点。例如,从第 101 个产品节点开始只运行 200 个产品节点。这很好用,因为您可以打开多个提示来执行一些穷人的多线程。

需要注意的一些事项:

  • 您的脚本可能会对服务器超时,尤其是在计算机进入睡眠状态时。这是在脚本中有一个起点很好的地方,以防您需要在某个点重新启动。

  • 这个过程可能有点慢。您可能会遇到很多瓶颈(HTTP 调用开销、连接速度慢等)。

  • Wordpress REST API 的文档记录很差。要上传图片,您只需要进行类似的调用。:

// PHP - Use Wordpress REST API Library to upload an image.
$imagedata     = file_get_contents("myimagefile.jpg");
$upload_result = $wordpress->post('media', [
    'body'    => $imagedata,
    'headers' => [
        'Content-Type'        => 'image/jpg',
        'content-disposition' => 'attachment; filename=myimagefile.jpg'
    ]
]);

于 2019-10-31T19:48:07.820 回答