php 更新WooCommerce产品和变体的最佳方法

baubqpgj  于 2022-12-25  发布在  PHP
关注(0)|答案(1)|浏览(158)

我对PHP、WordPress和WooCommerce比较陌生,但我有5年的Oracle(SQL和PL/SQL)经验,也做了很多JavaScript和一些TypeScript。
我为我的一个客户工作。他有一个基于WooCommerce的网店。我需要根据来自另一个HTTP服务器的数据更新产品和产品变化的stock_quantity,backorders和stock_status。目前,我在TS/JS中有一个工作解决方案,它运行在Linode服务器上,基本上是检索和组合/准备数据来更新WooCommerce。但是,因为它利用了WooCommerce HTTP API,该API具有批量更新限制(每秒100个,所有变体必须按父ID更新,也是每秒1个),并且我正在更新大约2500个产品和产品变体,所以完成该过程需要很长时间(~10分钟)。
我觉得有一个更好的办法,我在想:

  • PHP程序,更接近DB,也许对批量更新没有限制?但我无法找到任何WooCommerce PHP API以外的https://github.com/woocommerce/wc-api-php,这是HTTP API的 Package 器,所以最终,将返回相同的结果。
  • MySQL数据库过程,在DB中,应该运行得更快。很难剖析哪些表需要用哪些值来更新。MySQL DB能够做HTTP请求吗?

考虑到PHP、WordPress和WooCommerce的性能、安全性和保持更新,什么方法是最好的?

zpgglvta

zpgglvta1#

使用WC API来实现这一目标是目前为止最“可靠”的方法。该API非常稳定,并且(通常)不会在内部更改时中断。然而,正如您所注意到的,它是最慢的方法。
您的下一个最佳选择是使用Woocommerce CRUD方法运行更新,但同样,不是超级快速,但比使用API更快。

$product = wc_get_product( $product_id );
$product->set_stock = 100;
$product->set_stock_status = 'instock';
$product->save();

直接更新数据库是迄今为止最快的方法,但容易出错,因为,例如,虽然股票状态在wp_postmeta中,但它也是一个分类法,两者必须匹配,否则将产生意想不到的后果。

相关问题