woocommerce - WooCommerce - 通过 API / HTTP 请求更新产品
问题描述
我正在尝试通过第三方应用程序发送的通知来更新 WooCommerce 产品。我已经阅读了有关执行此操作的文档,看起来很简单,但使用 API 更新产品的唯一方法似乎是通过产品 ID。不幸的是,这些是在将相当大的产品目录上传到 WooCommerce 时增量创建的。
在制作 .csv 文件并上传到 WooCommerce 时,我们将 SKU 设置为与产品在第三方软件(图书 ISBN)中的 ID 相同。因此,我可以通过 HTTP 请求发送该编号(与 WC 中的 SKU 对应的编号),但这不允许我执行产品更新。
在我看来,完成这种集成的最佳方式是将我在 WooCommerce 中的所有产品的产品 ID 更改为与当前 SKU 的唯一编号相同。在仪表板或用户界面中似乎无法做到这一点,所以我想我必须在数据库级别上做到这一点。
有谁知道需要修改哪些表,或者是否有办法在仪表板中执行此操作?甚至可以调整我对 API 的 HTTP 请求,以允许我按 SKU 进行更新?
解决方案
直接修改数据库中的产品ID不是一个好的选择。每次创建新产品时都需要执行此操作。
最简单、最安全的方法是创建一个新的 API,用于按 SKU 搜索产品 ID。
这是示例代码的一部分。
function get_product_by_sku( $sku ) {
global $wpdb;
$product_id = $wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key='_sku' AND meta_value='%s' LIMIT 1", $sku ) );
if ( $product_id ) return new WC_Product( $product_id );
return null;
}
推荐阅读
- java - 即使该位置有图像,也找不到文件异常
- xml - SED 多行搜索和替换错误
- github-api - Github API : Github App 在创建问题时应该获得什么权限
- r - 如何生成 2 个具有不同均值的不相关随机正态变量(使用 R)
- webpack-4 - 在 AngularJS1.5.11 中使用 Webpack4 时构建失败
- excel - 如何通过匹配值对Excel中的多列进行排序
- selenium-webdriver - 我试图从硒中调用铬。浏览器正在打开,但没有加载数据
- java - 有时定位服务无法在后台运行
- php - 如何在 WordPress 主题中创建电子商务 html 模板?
- javascript - 如何在 reactjs 中单击按钮时呈现 .js 文件?