带有 WooCommerce 扩展的 WP Webhooks Pro 不发送订单项

Posted

技术标签:

【中文标题】带有 WooCommerce 扩展的 WP Webhooks Pro 不发送订单项【英文标题】:WP Webhooks Pro with WooCommerce extension not sending line items 【发布时间】:2020-05-04 18:16:14 【问题描述】:

有什么办法可以做到这一点?通过“在新帖子上发送数据”使用它,但它不包括有效负载中的行项目。正在尝试将其发送到 Zapier Catch Raw Hook zap。

【问题讨论】:

【参考方案1】:

要使用 webhook 从 Woocommerce 发送数据,您可以使用集成到 Woocommerce 中的 webhook 功能。更多详情请点击此处:https://docs.woocommerce.com/document/webhooks/

如果您希望使用 WP WebhooksWP Webhooks Pro 进行此操作,您可以在主题的 functions.php 文件中包含以下 WordPress 挂钩: p>

add_filter( 'wpwhpro/admin/webhooks/webhook_data', 'wpwhpro_append_woocommerce_items_to_create_post', 10, 4 );
function wpwhpro_append_woocommerce_items_to_create_post( $data, $response, $webhook, $args )

    //Make sure we only append the Woocommerce Data to the post_create webhook
    if( ! isset( $webhook['webhook_name'] ) || $webhook['webhook_name'] !== 'post_create' )
        return $data;
    

    //Verfiy the post id is set before adding the data
    if( ! isset( $data['post_id'] ) || empty( $data['post_id'] ) )
        return $data;
    

    //Won't work if Woocommerce is deactivated or not available
    if( ! function_exists( 'wc_get_order' ) )
        return $data;
    

    $order_id = intval( $data['post_id'] );
    $order = wc_get_order( $order_id );

    //Make sure there wasn't a problem with fetching the order
    if( empty( $order ) || is_wp_error( $order ) )
        return $data;
    

    //The array with order item data we append to the request body
    $data['order_items'] = array();
    $order_items = $order->get_items();

    foreach( $order_items as $key => $item )

        //This is the data per product we are going to append
        $single_item_data = array(
            'name'          => $item->get_name(),
            'item_id'       => $item->get_id(),
            'product_id'    => $item->get_variation_id() ? $item->get_variation_id() : $item->get_product_id(),
            'quantity'      => $item->get_quantity(),
            'subtotal'      => $item->get_subtotal(),
            'subtotal_tax'  => $item->get_subtotal_tax(),
            'subtotal_tax'  => $item->get_total_tax(),
            'tax_class'     => $item->get_tax_class(),

        );

        $data['order_items'][ $key ] = $single_item_data;

    

    return $data;


这会扩展 create_post 调用的响应并将订单的行项目添加到其中。 您可以根据需要自定义要发送的值 - 只需将它们添加到上面代码中的单个行项中。 如果您选择使用 JSON 格式发送数据,它将在您的请求中添加如下内容:

"order_items": 
    "36": 
      "name": "Extension product",
      "item_id": 36,
      "product_id": 156,
      "quantity": 2,
      "subtotal": "4",
      "subtotal_tax": "0",
      "tax_class": ""
    ,
    "37": 
      "name": "Main Product",
      "item_id": 37,
      "product_id": 155,
      "quantity": 1,
      "subtotal": "5",
      "subtotal_tax": "0",
      "tax_class": ""
    

如果您想更专业地使用它,您还可以为 WP Webhooks 和/或 WP Webhooks Pro 创建自己的扩展。有一个可用的插件模板可以让你添加一个相当简单的 webhook:Visit their documentation on it

【讨论】:

谢谢!最终使用了默认的 WooCommerce Webhooks,并可能最终将其切换到 WP Webhooks,只是为了稍微清理一下有效负载。感谢您的详尽回答!

以上是关于带有 WooCommerce 扩展的 WP Webhooks Pro 不发送订单项的主要内容,如果未能解决你的问题,请参考以下文章

WooCommerce 4.3发布!- WP站长

使用 wp-woocommerce 的 FirstData

停止 WooCommerce 将 wp-login.php 和 wp-admin 重定向到帐户页面

markdown WP全部导入到WooCommerce

在每个产品 ID/WP 的 WooCommerce 产品价格后添加文本

html wp.​​woocommerce.italian.province.html