通过 SKU 标识符使用 Woocommerce REST API 更新产品

2023-12-25

我需要使用 REST API 将产品从实时网站更新到登台。如果我添加静态产品 ID,效果会很好。我需要的是将跨网站的产品与 SKU 进行匹配,而不是通过 ID 进行匹配,因为它不一样。

关于如何做到这一点有什么想法吗?我的代码如下。

add_action( 'woocommerce_update_product', 'on_product_savex', 10, 1 );
function on_product_savex( $product_id ) {
   $product = wc_get_product( $product_id );
   $get_main_website_product_id = get_post_meta( $product_id, '_sku', true );
   $live_ck = 'ck_xxxx';
   $live_cs = 'cs_xxxx';
   $live_url = 'https://web.com/wp-json/wc/v3/products?sku='.$get_main_website_product_id.'&consumer_key=' . $live_ck . '&consumer_secret=' . $live_cs;
   
   
   $body = array(
        'name' => $product->get_name(), // product title
        'status' => 'private', // product status, default: publish
        'regular_price' => $product->get_regular_price(),
        'sale_price' => $product->get_sale_price(),
        'description' => $product->get_description(),
        'sku' => $product->get_sku(),
        'weight' => $product->get_weight(),
        'manage_stock' => true,
        'stock_quantity' => 10,
        
     
   );
   
   print_r( $body );
   $raw_response = wp_remote_post( $live_url, 
      array(
         'headers' => array( 'Content-Type' => 'application/json' ),
         'timeout' => 30,                    
         'body' => json_encode( $body ),
      )
   );
}

首先使用 SKU 获取远程产品 ID,然后使用实时产品数据更新远程产品。

add_action( 'woocommerce_update_product', 'on_product_savex', 10, 1 );
function on_product_savex( $product_id ) {
   $product = wc_get_product( $product_id );
   $product_sku = $product->get_sku();
   $remote_keys = "consumer_key=xxxxxx&consumer_secret=xxxxxx";

   // retrieve product ID by SKU, return product properties
   $remote_get = wp_remote_get("https://web.com/wp-json/wc/v3/products?sku={$product_sku}&{$remote_keys}");
   $remote_product = json_decode($remote_get['body'])[0];
   $remote_product_id = $remote_product->id;
   
   $body = array(
      'name' => $product->get_name(), // product title
      'status' => 'private', // product status, default: publish
      'regular_price' => $product->get_regular_price(),
      'sale_price' => $product->get_sale_price(),
      'description' => $product->get_description(),
      'sku' => $product->get_sku(),
      'weight' => $product->get_weight(),
      'manage_stock' => true,
      'stock_quantity' => 10,
   );

   $raw_response = wp_remote_post( "https://web.com/wp-json/wc/v3/products/{$remote_product_id}?{$remote_keys}", 
      array(
         "headers" => array( "Content-Type" => "application/json" ),
         "timeout" => 30,                    
         "body" => json_encode( $body ),
      )
   );
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 SKU 标识符使用 Woocommerce REST API 更新产品 的相关文章

  • 从 SUDS 中的 SOAP 响应中提取 Cookie

    我必须使用具有多种服务的 API 所有这些都需要来自下面的身份验证的 JSESSION cookie 然而 当我调用下一个服务时 它不会保留 cookie 因此会拒绝它们 from suds client import Client url
  • REST API 路由最佳实践

    我想知道当订单是一种资源时 为以下场景创建 REST API 的最佳实践是什么 获取数据库中的所有订单 当然不是实际场景 仅供理解 通过订单ID获取订单 根据订单ID获取单个订单 单个 GET 路由是否可以用于所有这些场景 或者我们应该针对
  • 在 header.php 中设置变量但在 footer.php 中看不到

    在WordPress中 我设置了一个变量header php but in 页脚 php当我回应它时 我没有打印任何东西 为什么 gt 您不在同一范围内 因为页眉和页脚文件包含在函数体中 因此 您正在声明一个局部变量 并引用另一个局部变量
  • Elasticsearch GET API 获取分片大小

    在 Elasticsearch 2 3 3 中 有没有办法使用返回 JSON 的 GET API 获取分片大小 目前我找到了以下几种获取shard size的方法 这两种方法都存在问题 recovery gt 使用 JSON 进行响应并提供
  • 如何在 WP_Query 中按日期排序?

    我已经尝试过这种方式但是orderby and order不适用于 WP Query 类 posts new WP Query array post type gt block code orderby gt post date order
  • 访客客户检查 Woocommerce 订单账单电子邮件时可享受首单折扣

    通过对照正在处理和已完成的订单检查来宾客户的电子邮件地址 如果电子邮件没有订单 我想给来宾 首单折扣 如果这能在客人输入电子邮件时发生 那就太好了 我想我已经成功制作了折扣代码 现在我请求帮助合并这两个代码 使其一切正常 这是折扣代码 ad
  • 如果端口不是 80,.htaccess 重定向到错误页面

    我正在运行一个便携式服务器 http www server2go web de 通过 USB 棒 问题是我还在我的本地计算机上安装了 WAMP 并且 Apache 不知何故在 Windows 启动时启动 因为一些我现在不记得的随机原因并且无
  • php - 重定向ajax请求[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何在 php wordpress 中重定向 ajax 请求 I tried header Location http redirect
  • 在 Elasticsearch php API 中使用多种类型或索引

    我想使用查询多种类型和索引Elasticsearch PHP API 但我不知道怎么办 我应该将类型和索引的数组传递给 params params index index array of indices params type types
  • 由商店经理根据指定的分类术语过滤 WooCommerce 订单

    我想将带有特定产品标签的订单分配给后端的特定商店经理 并隐藏其余订单 我目前正在使用WooCommerce 订单拆分器 https wordpress org plugins woo order splitter免费插件可按项目 产品 将订
  • 用于检索名人信息的 API [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • JQuery / Flickr API 获取照片集的问题

    我一直在尝试构建一个通过 Flickr 管理的相册系统 过去一天左右我一直在使用 Flickr API 并编写了以下代码 但它只是没有返回预期的 HTML insetad 我在浏览器中收到上面一行的错误 images html theHtm
  • 在 libgdx 中批处理多维数据集时出现问题

    我正在尝试开发一款游戏 在屏幕上渲染多达 300 个立方体 为每个多维数据集创建新的 modelInstance 时 modelBatch 的性能非常糟糕 据我所知 没有 3d 批处理可以将所有立方体批处理到一次绘制调用 所以我拼命地尝试以
  • 收到“提供的 API 密钥已过期”。使用 Places API 时出错

    我已经从 Google 控制台为 Places API 密钥生成了服务器密钥 但每当我访问该服务时 我都会收到 提供的 API 密钥已过期 错误 我已尝试重新生成密钥 但仍然出现相同的错误 我遇到了同样的问题 但终于解决了 Google 地
  • 扩展 PHP 正则表达式以涵盖“srcset”和“style”属性

    我创建了一个 WordPress 插件 可以将所有链接变成协议相关 URL https en wikipedia org wiki Wikipedia Protocol relative URL 删除http and https 基于我在中
  • 更改管理仪表板 WooCommerce 小部件标题

    我想将 WooCommerce 仪表板小部件标题从 WooCommerce 状态 更改为其他内容 我知道我需要在 Functions php 中使用钩子 但我正在努力使这项工作正常进行 我在 WooCommerce 中找到了生成仪表板小部件
  • 根据注册后的时间自动删除Wordpress用户?

    在使用用户访问管理器的基本 WordPress 3 1 设置中 是否可以自动删除 x 天前的用户 我没有找到此功能的插件 人们将如何实施这一举措 我是否能够使用 sql 或 php 查询设置一个 cron 作业 从而每天自动从数据库中删除
  • WooCommerce - 按下按钮时更新所有产品描述(全站点)

    我一直在使用以下代码 希望能够创建一个按钮 按下它 然后我网站上的所有描述都会自动生成 梦想 我的问题 为什么我的代码没有按预期更新所有产品 到目前为止 我有以下代码 虽然它在一定程度上可以工作 但当按钮位于产品页面上时无法正常工作 它将更
  • 如何编辑 Woocommerce 单一产品元模板中显示的内容?

    我正在为客户做一些工作并使用 wordpress woocommerce 他们要求我将类别移动到我已经完成的单个产品页面上的产品名称下 但他们不希望它打印 类别 类别 1 类别 2 等 他们希望删除 类别 并且它实际上只列出类别的名称 而不
  • HttpMediaTypeNotAcceptableException / HttpMediaTypeNotAcceptableException:找不到可接受的表示

    我有一个客户端正在尝试连接的 API 但是它会抛出错误 2015 09 22 04 21 44 297 org springframework web servlet mvc method annotation HttpEntityMeth

随机推荐