WooCommerce 挂钩 - 产品更新提供变体对象而不是 ID

哦疯了

当从 WooCommerce 接收产品更新挂钩时,有效负载包含一个“变体”数组,但是,该数组仅包含属于更新产品的变体的 ID。

如何将实际的变体对象与产品更新的有效负载一起发送,而不仅仅是变体的 ID(这样,我就不需要向 REST API 的变体资源发送另一个请求来获取它们)。

谢谢!

萨加尔·巴哈杜尔·塔芒

您需要挂钩woocommerce_webhook_payload以构建有效负载。产品变体的详细信息存储在 中variations_objs

// Hook to the webhook build process and add your variations objects.
add_filter( 'woocommerce_webhook_payload', 'dolly_woocommerce_webhook_payload', 10, 4 );
function dolly_woocommerce_webhook_payload( $payload, $resource, $resource_id, $id ) {
    // Remove the filter to eliminate the recursion calls.
    remove_filter( 'woocommerce_webhook_payload', 'dolly_woocommerce_webhook_payload', 10 );

    // Create a WC_Webhook class with the webhook id.
    $wc_webhook = new WC_Webhook( $id );

    // Bail early if the resource is not product.
    if ( 'product' !== $resource ) {
        return $payload;
    }

    // Bail early if the product type is not variable.
    $product = new WC_Product( $resource_id );
    if ( 'variable' === $product->get_type() ) {
        return $payload;
    }   

    // Build the payload of each product variation.
    $variations = $payload['variations'];
    foreach( $variations as $variation ) {
        $variations_objs[] = $wc_webhook->build_payload( $variation );
    }

    // Add the varitions to the payload.
    $payload['variations_objs'] = $variations_objs;

    // Add the filter again and return the payload.
    add_filter( 'woocommerce_webhook_payload', 'dolly_woocommerce_webhook_payload', 10, 4 );
    return $payload;
}

这是 webhook 发送的数据。

{
  "id"                   : 94,
  "name"                 : "Nepali Shirt",
  "slug"                 : "nepali-shirt",
  "permalink"            : "http://online-users.test/product/nepali-shirt/",
  "date_created"         : "2019-07-14T05:12:52",
  "date_created_gmt"     : "2019-07-14T05:12:52",
  "date_modified"        : "2019-07-18T07:52:36",
  "date_modified_gmt"    : "2019-07-18T07:52:36",
  "type"                 : "variable",
  "status"               : "publish",
  "featured"             : false,
  "catalog_visibility"   : "visible",
  "description"          : "<p>hello tamang hhh jjjjj sfsfsd hllk ljlkjkl jljk ljlkjkl kjlkjlk jlkj dgdfg jkl ljlk sdfdsf sfsd sfdds</p>\n",
  "short_description"    : "",
  "sku"                  : "",
  "price"                : "205",
  "regular_price"        : "",
  "sale_price"           : "",
  "date_on_sale_from"    : null,
  "date_on_sale_from_gmt": null,
  "date_on_sale_to"      : null,
  "date_on_sale_to_gmt"  : null,
  "price_html"           : "<span class=\"woocommerce-Price-amount amount\"><span class=\"woocommerce-Price-currencySymbol\">&pound;</span>205.00</span> &ndash; <span class=\"woocommerce-Price-amount amount\"><span class=\"woocommerce-Price-currencySymbol\">&pound;</span>500.00</span>",
  "on_sale"              : false,
  "purchasable"          : true,
  "total_sales"          : 0,
  "virtual"              : false,
  "downloadable"         : false,
  "downloads"            : [],
  "download_limit"       : -1,
  "download_expiry"      : -1,
  "external_url"         : "",
  "button_text"          : "",
  "tax_status"           : "taxable",
  "tax_class"            : "",
  "manage_stock"         : false,
  "stock_quantity"       : null,
  "in_stock"             : true,
  "backorders"           : "no",
  "backorders_allowed"   : false,
  "backordered"          : false,
  "sold_individually"    : false,
  "weight"               : "",
  "dimensions"           : {
    "length": "",
    "width" : "",
    "height": ""
  },
  "shipping_required": true,
  "shipping_taxable" : true,
  "shipping_class"   : "",
  "shipping_class_id": 0,
  "reviews_allowed"  : true,
  "average_rating"   : "0.00",
  "rating_count"     : 0,
  "related_ids"      : [
    82,
    80
  ],
  "upsell_ids"    : [],
  "cross_sell_ids": [],
  "parent_id"     : 0,
  "purchase_note" : "",
  "categories"    : [
    {
      "id"  : 15,
      "name": "Uncategorized",
      "slug": "uncategorized"
    }
  ],
  "tags"  : [],
  "images": [
    {
      "id"               : 0,
      "date_created"     : "2019-07-18T07:53:30",
      "date_created_gmt" : "2019-07-18T07:53:30",
      "date_modified"    : "2019-07-18T07:53:30",
      "date_modified_gmt": "2019-07-18T07:53:30",
      "src"              : "http://online-users.test/wp-content/uploads/woocommerce-placeholder-324x324.png",
      "name"             : "Placeholder",
      "alt"              : "Placeholder",
      "position"         : 0
    }
  ],
  "attributes": [
    {
      "id"       : 1,
      "name"     : "Color",
      "position" : 0,
      "visible"  : true,
      "variation": true,
      "options"  : [
        "Blue",
        "Gray",
        "Red"
      ]
    }
  ],
  "default_attributes": [
    {
      "id"    : 1,
      "name"  : "Color",
      "option": "blue"
    }
  ],
  "variations": [
    96,
    97,
    98
  ],
  "grouped_products": [],
  "menu_order"      : 0,
  "meta_data"       : [
    {
      "id"   : 1103,
      "key"  : "pageview",
      "value": "1"
    }
  ],
  "store": {
    "id"       : 1,
    "name"     : "admin",
    "shop_name": "WordPress Biratnagar",
    "url"      : "http://online-users.test/store/admin/",
    "address"  : {
      "street_1": "Haatkhola",
      "street_2": "",
      "city"    : "Biratnagar",
      "zip"     : "977",
      "country" : "NP",
      "state"   : "BAG"
    }
  },
  "variations_objs": [
    {
      "id"                   : 96,
      "name"                 : "Nepali Shirt - Blue",
      "slug"                 : "nepali-shirt-blue",
      "permalink"            : "http://online-users.test/product/nepali-shirt/?attribute_pa_color=blue",
      "date_created"         : "2019-07-14T05:12:12",
      "date_created_gmt"     : "2019-07-14T05:12:12",
      "date_modified"        : "2019-07-18T06:52:07",
      "date_modified_gmt"    : "2019-07-18T06:52:07",
      "type"                 : "variation",
      "status"               : "publish",
      "featured"             : false,
      "catalog_visibility"   : "visible",
      "description"          : "",
      "short_description"    : "",
      "sku"                  : "",
      "price"                : "205",
      "regular_price"        : "205",
      "sale_price"           : "",
      "date_on_sale_from"    : null,
      "date_on_sale_from_gmt": null,
      "date_on_sale_to"      : null,
      "date_on_sale_to_gmt"  : null,
      "price_html"           : "<span class=\"woocommerce-Price-amount amount\"><span class=\"woocommerce-Price-currencySymbol\">&pound;</span>205.00</span>",
      "on_sale"              : false,
      "purchasable"          : true,
      "total_sales"          : "0",
      "virtual"              : false,
      "downloadable"         : false,
      "downloads"            : [],
      "download_limit"       : -1,
      "download_expiry"      : -1,
      "external_url"         : "",
      "button_text"          : "",
      "tax_status"           : "taxable",
      "tax_class"            : "",
      "manage_stock"         : false,
      "stock_quantity"       : null,
      "in_stock"             : true,
      "backorders"           : "no",
      "backorders_allowed"   : false,
      "backordered"          : false,
      "sold_individually"    : false,
      "weight"               : "",
      "dimensions"           : {
        "length": "",
        "width" : "",
        "height": ""
      },
      "shipping_required": true,
      "shipping_taxable" : true,
      "shipping_class"   : "",
      "shipping_class_id": 0,
      "reviews_allowed"  : false,
      "average_rating"   : "0.00",
      "rating_count"     : 0,
      "related_ids"      : [],
      "upsell_ids"       : [],
      "cross_sell_ids"   : [],
      "parent_id"        : 94,
      "purchase_note"    : "",
      "categories"       : [],
      "tags"             : [],
      "images"           : [
        {
          "id"               : 0,
          "date_created"     : "2019-07-18T07:54:12",
          "date_created_gmt" : "2019-07-18T07:54:12",
          "date_modified"    : "2019-07-18T07:54:12",
          "date_modified_gmt": "2019-07-18T07:54:12",
          "src"              : "http://online-users.test/wp-content/uploads/woocommerce-placeholder-324x324.png",
          "name"             : "Placeholder",
          "alt"              : "Placeholder",
          "position"         : 0
        }
      ],
      "attributes": [
        {
          "id"    : 1,
          "name"  : "Color",
          "option": "Blue"
        }
      ],
      "default_attributes": [],
      "variations"        : [],
      "grouped_products"  : [],
      "menu_order"        : 1,
      "meta_data"         : [],
      "store"             : {
        "id"       : 1,
        "name"     : "admin",
        "shop_name": "WordPress Biratnagar",
        "url"      : "http://online-users.test/store/admin/",
        "address"  : {
          "street_1": "Haatkhola",
          "street_2": "",
          "city"    : "Biratnagar",
          "zip"     : "977",
          "country" : "NP",
          "state"   : "BAG"
        }
      }
    },
    {
      "id"                : 97,
      "name"              : "Nepali Shirt - Gray",
      "slug"              : "nepali-shirt-gray",
      "permalink"         : "http://online-users.test/product/nepali-shirt/?attribute_pa_color=gray",
      "date_created"      : "2019-07-14T05:12:13",
      "date_created_gmt"  : "2019-07-14T05:12:13",
      "date_modified"     : "2019-07-14T05:12:44",
      "date_modified_gmt" : "2019-07-14T05:12:44",
      "type"              : "variation",
      "status"            : "publish",
      "featured"          : false,
      "catalog_visibility": "visible",
      "description"       : "",
      "short_description": "",
      "sku": "",
      "price": "300",
      "regular_price": "300",
      "sale_price": "",
      "date_on_sale_from": null,
      "date_on_sale_from_gmt": null,
      "date_on_sale_to": null,
      "date_on_sale_to_gmt": null,
      "price_html": "<span class=\"woocommerce-Price-amount amount\"><span class=\"woocommerce-Price-currencySymbol\">&pound;</span>300.00</span>",
      "on_sale": false,
      "purchasable": true,
      "total_sales": "0",
      "virtual": false,
      "downloadable": false,
      "downloads": [],
      "download_limit": -1,
      "download_expiry": -1,
      "external_url": "",
      "button_text": "",
      "tax_status": "taxable",
      "tax_class": "",
      "manage_stock": false,
      "stock_quantity": null,
      "in_stock": true,
      "backorders": "no",
      "backorders_allowed": false,
      "backordered": false,
      "sold_individually": false,
      "weight": "",
      "dimensions": {
        "length": "",
        "width": "",
        "height": ""
      },
      "shipping_required": true,
      "shipping_taxable": true,
      "shipping_class": "",
      "shipping_class_id": 0,
      "reviews_allowed": false,
      "average_rating": "0.00",
      "rating_count": 0,
      "related_ids": [],
      "upsell_ids": [],
      "cross_sell_ids": [],
      "parent_id": 94,
      "purchase_note": "",
      "categories": [],
      "tags": [],
      "images": [
        {
          "id": 0,
          "date_created": "2019-07-18T07:54:13",
          "date_created_gmt": "2019-07-18T07:54:13",
          "date_modified": "2019-07-18T07:54:13",
          "date_modified_gmt": "2019-07-18T07:54:13",
          "src": "http://online-users.test/wp-content/uploads/woocommerce-placeholder-324x324.png",
          "name": "Placeholder",
          "alt": "Placeholder",
          "position": 0
        }
      ],
      "attributes": [
        {
          "id": 1,
          "name": "Color",
          "option": "Gray"
        }
      ],
      "default_attributes": [],
      "variations": [],
      "grouped_products": [],
      "menu_order": 2,
      "meta_data": [],
      "store": {
        "id": 1,
        "name": "admin",
        "shop_name": "WordPress Biratnagar",
        "url": "http://online-users.test/store/admin/",
        "address": {
          "street_1": "Haatkhola",
          "street_2": "",
          "city": "Biratnagar",
          "zip": "977",
          "country": "NP",
          "state": "BAG"
        }
      }
    },
    {
      "id": 98,
      "name": "Nepali Shirt - Red",
      "slug": "nepali-shirt-red",
      "permalink": "http://online-users.test/product/nepali-shirt/?attribute_pa_color=red",
      "date_created": "2019-07-14T05:12:14",
      "date_created_gmt": "2019-07-14T05:12:14",
      "date_modified": "2019-07-14T05:42:04",
      "date_modified_gmt": "2019-07-14T05:42:04",
      "type": "variation",
      "status": "publish",
      "featured": false,
      "catalog_visibility": "visible",
      "description": "",
      "short_description": "",
      "sku": "",
      "price": "500",
      "regular_price": "500",
      "sale_price": "",
      "date_on_sale_from": null,
      "date_on_sale_from_gmt": null,
      "date_on_sale_to": null,
      "date_on_sale_to_gmt": null,
      "price_html": "<span class=\"woocommerce-Price-amount amount\"><span class=\"woocommerce-Price-currencySymbol\">&pound;</span>500.00</span>",
      "on_sale": false,
      "purchasable": true,
      "total_sales": "0",
      "virtual": false,
      "downloadable": false,
      "downloads": [],
      "download_limit": -1,
      "download_expiry": -1,
      "external_url": "",
      "button_text": "",
      "tax_status": "taxable",
      "tax_class": "",
      "manage_stock": false,
      "stock_quantity": null,
      "in_stock": true,
      "backorders": "no",
      "backorders_allowed": false,
      "backordered": false,
      "sold_individually": false,
      "weight": "",
      "dimensions": {
        "length": "",
        "width": "",
        "height": ""
      },
      "shipping_required": true,
      "shipping_taxable": true,
      "shipping_class": "",
      "shipping_class_id": 0,
      "reviews_allowed": false,
      "average_rating": "0.00",
      "rating_count": 0,
      "related_ids": [],
      "upsell_ids": [],
      "cross_sell_ids": [],
      "parent_id": 94,
      "purchase_note": "",
      "categories": [],
      "tags": [],
      "images": [
        {
          "id": 0,
          "date_created": "2019-07-18T07:54:14",
          "date_created_gmt": "2019-07-18T07:54:14",
          "date_modified": "2019-07-18T07:54:14",
          "date_modified_gmt": "2019-07-18T07:54:14",
          "src": "http://online-users.test/wp-content/uploads/woocommerce-placeholder-324x324.png",
          "name": "Placeholder",
          "alt": "Placeholder",
          "position": 0
        }
      ],
      "attributes": [
        {
          "id": 1,
          "name": "Color",
          "option": "Red"
        }
      ],
      "default_attributes": [],
      "variations": [],
      "grouped_products": [],
      "menu_order": 3,
      "meta_data": [],
      "store": {
        "id": 1,
        "name": "admin",
        "shop_name": "WordPress Biratnagar",
        "url": "http://online-users.test/store/admin/",
        "address": {
          "street_1": "Haatkhola",
          "street_2": "",
          "city": "Biratnagar",
          "zip": "977",
          "country": "NP",
          "state": "BAG"
        }
      }
    }
  ]
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

编辑产品挂钩 Woocommerce

来自分类Dev

Woocommerce挂钩以更新订单

来自分类Dev

如何从“ woocommerce_cart_item_removed”挂钩中找出产品ID?

来自分类Dev

如何从“ woocommerce_cart_item_removed”挂钩中找到产品ID?

来自分类Dev

使用 Woocommerce 中的挂钩更新产品价格

来自分类Dev

WooCommerce库存的哪些挂钩已保存或更新

来自分类Dev

在 WooCommerce 中更新订单元之前挂钩?

来自分类Dev

在WooCommerce产品的挂钩函数中检查产品类别

来自分类Dev

Woocommerce 中的自定义产品模板和操作挂钩

来自分类Dev

哪个挂钩可将WooCommerce产品元数据保存在WooCommerce中?

来自分类Dev

woocommerce_process_shop_order_meta挂钩中的客户ID为0

来自分类Dev

在woocommerce_admin_billing_fields筛选器挂钩中无法获取订单ID

来自分类Dev

从Woocommerce挂钩中删除功能

来自分类Dev

挂钩Woocommerce订阅地址更改

来自分类Dev

如何使用WooCommerce会员挂钩

来自分类Dev

客户登录后的Woocommerce挂钩

来自分类Dev

挂钩Woocommerce订阅地址更改

来自分类Dev

覆盖 WooCommerce 中的挂钩函数

来自分类Dev

WooCommerce woocommerce_new_order_item挂钩

来自分类Dev

WooCommerce挂钩– woocommerce_update_order问题

来自分类Dev

反应挂钩覆盖与对象数据相同的ID数组

来自分类Dev

Woocommerce从类别获取产品ID

来自分类Dev

按ID筛选产品Woocommerce

来自分类Dev

WooCommerce Checkout网址挂钩-根据产品类别更改条件

来自分类Dev

使用挂钩在产品页面上添加额外费用[Woocommerce]

来自分类Dev

通过挂钩在WooCommerce单个产品页面中显示自定义字段值

来自分类Dev

通过挂钩更改WooCommerce 3+中特定类别的产品价格

来自分类Dev

是否有挂钩或插件可以从 woocommerce 优惠券中排除某些产品标签?

来自分类Dev

为什么在woocommerce_login_redirect挂钩中使用get_current_user_id()返回0

Related 相关文章

  1. 1

    编辑产品挂钩 Woocommerce

  2. 2

    Woocommerce挂钩以更新订单

  3. 3

    如何从“ woocommerce_cart_item_removed”挂钩中找出产品ID?

  4. 4

    如何从“ woocommerce_cart_item_removed”挂钩中找到产品ID?

  5. 5

    使用 Woocommerce 中的挂钩更新产品价格

  6. 6

    WooCommerce库存的哪些挂钩已保存或更新

  7. 7

    在 WooCommerce 中更新订单元之前挂钩?

  8. 8

    在WooCommerce产品的挂钩函数中检查产品类别

  9. 9

    Woocommerce 中的自定义产品模板和操作挂钩

  10. 10

    哪个挂钩可将WooCommerce产品元数据保存在WooCommerce中?

  11. 11

    woocommerce_process_shop_order_meta挂钩中的客户ID为0

  12. 12

    在woocommerce_admin_billing_fields筛选器挂钩中无法获取订单ID

  13. 13

    从Woocommerce挂钩中删除功能

  14. 14

    挂钩Woocommerce订阅地址更改

  15. 15

    如何使用WooCommerce会员挂钩

  16. 16

    客户登录后的Woocommerce挂钩

  17. 17

    挂钩Woocommerce订阅地址更改

  18. 18

    覆盖 WooCommerce 中的挂钩函数

  19. 19

    WooCommerce woocommerce_new_order_item挂钩

  20. 20

    WooCommerce挂钩– woocommerce_update_order问题

  21. 21

    反应挂钩覆盖与对象数据相同的ID数组

  22. 22

    Woocommerce从类别获取产品ID

  23. 23

    按ID筛选产品Woocommerce

  24. 24

    WooCommerce Checkout网址挂钩-根据产品类别更改条件

  25. 25

    使用挂钩在产品页面上添加额外费用[Woocommerce]

  26. 26

    通过挂钩在WooCommerce单个产品页面中显示自定义字段值

  27. 27

    通过挂钩更改WooCommerce 3+中特定类别的产品价格

  28. 28

    是否有挂钩或插件可以从 woocommerce 优惠券中排除某些产品标签?

  29. 29

    为什么在woocommerce_login_redirect挂钩中使用get_current_user_id()返回0

热门标签

归档