You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PrestaShop前端:用户修改商品数量/规格时的Hook咨询

商品数量/属性修改时的Hook及API调用方案

以下针对主流电商系统,给出对应的钩子(Hook)及API调用实现方案:

WooCommerce(WordPress)

商品详情页修改属性(如尺寸/变体)

使用woocommerce_variation_has_changed动作钩子,该钩子会在用户切换商品变体时触发:

add_action('woocommerce_variation_has_changed', 'trigger_external_api_on_variation_change');
function trigger_external_api_on_variation_change($variation_id) {
    // 获取变体及父商品信息
    $variation = wc_get_product($variation_id);
    $product_id = $variation->get_parent_id();
    
    // 调用外部API
    $api_url = 'https://your-external-api.com/endpoint';
    $payload = [
        'product_id' => $product_id,
        'variation_id' => $variation_id,
        'action' => 'variation_updated'
    ];
    
    wp_remote_post($api_url, [
        'body' => $payload,
        'headers' => ['Content-Type' => 'application/x-www-form-urlencoded'],
        'blocking' => false // 异步调用,避免阻塞页面
    ]);
}

结账/购物车页修改数量

使用woocommerce_cart_item_quantity_updated钩子,监听购物车商品数量变更:

add_action('woocommerce_cart_item_quantity_updated', 'trigger_api_on_cart_quantity_change', 10, 4);
function trigger_api_on_cart_quantity_change($cart_item_key, $new_qty, $old_qty, $cart) {
    $cart_item = $cart->get_cart_item($cart_item_key);
    $product_id = $cart_item['product_id'];
    $variation_id = $cart_item['variation_id'] ?? 0;
    
    // API调用逻辑
    $api_url = 'https://your-external-api.com/cart-update';
    $payload = [
        'product_id' => $product_id,
        'variation_id' => $variation_id,
        'new_quantity' => $new_qty,
        'old_quantity' => $old_qty
    ];
    
    wp_remote_post($api_url, ['body' => $payload, 'blocking' => false]);
}

Shopify

商品详情页变体切换

监听Shopify内置的product-variant-change前端事件,在主题的商品模板文件(如product.liquid或对应section)中添加:

document.addEventListener('product-variant-change', (event) => {
    const selectedVariant = event.detail.variant;
    if (!selectedVariant) return;
    
    // 调用外部API
    fetch('https://your-external-api.com/variant-update', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({
            product_id: selectedVariant.product_id,
            variant_id: selectedVariant.id,
            variant_title: selectedVariant.title
        })
    })
    .catch(err => console.error('API调用失败:', err)); // 错误捕获
});

结账页数量修改

Shopify托管的结账页无法直接修改模板,可使用官方Webhook:

  • 在Shopify后台进入「设置」→「通知」→「Webhook」
  • 添加新Webhook,事件选择Cart update
  • 填写你的外部API回调URL,格式选择JSON
  • 当购物车数量/变体变更时,Shopify会自动向该URL发送包含购物车信息的请求

通用注意事项

  • 异步优先:所有API调用尽量用异步方式,避免阻塞用户操作流程
  • 错误处理:添加异常捕获逻辑,防止API故障影响页面正常功能
  • 数据校验:传递给API的商品ID、数量等信息需做校验,确保准确性

内容的提问来源于stack exchange,提问作者Fabio Lopez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 18:33:08