用途:WooCommerce Blocks 以 React 驱动的古腾堡区块取代基于短代码的传统购物车与结账页;自 WooCommerce 8.3 版起,区块结账成为新店铺默认方式。自定义插件可扩展结账区块。
主要能力:注册结账内嵌区块,在结账步骤中渲染自定义字段(如赠言、配送日期、VAT 号);用 SlotFill 将促销或加售内容注入购物车与结账页的预设位置;扩展 Store API 以保存和读取自定义数据;创建带额外业务逻辑的自定义结账步骤;在不改核心模板的前提下扩展结账行为。
使用方式:通过 woocommerce_blocks_loaded 钩子加载插件,实现 IntegrationInterface 接口并注册至 woocommerce_blocks_checkout_block_registration;用 registerCheckoutBlock 注册内嵌区块,配合 block.json 清单;使用 @wordpress/scripts 构建(wp-scripts build src/frontend.js src/blocks/gift-message/index.js);用 extensionCartUpdate 将数据写入 WC 会话;通过 woocommerce_store_api_register_endpoint_data 扩展 Store API 的 Cart schema,用 woocommerce_store_api_register_update_callback 处理与校验数据,再用 woocommerce_checkout_order_created 把会话数据转入订单元数据。SlotFill 需在 registerPlugin 中设置 scope: "woocommerce-checkout",依赖 @woocommerce/block-data 的 CART_STORE_KEY 读取购物车数据。
适用场景:为结账表单添加自定义字段、向购物车/结账注入推广横幅、构建扩展结账的插件、将旧短代码结账迁移到区块结账。
限制:需在服务端校验数据,客户端校验可被绕过;自定义数据不会自动写入订单,需手动转移;SlotFill 缺少正确 scope 会静默不渲染;需分别测试经典与区块结账;内嵌区块的 parent 需精确匹配目标结账步骤的区块名。相关技能包括 woocommerce-plugin-development、woocommerce-rest-api、gutenberg-block-development 等。具体价格与更多支持细节暂未提供。