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

WooCommerce STORE API扩展失败:woocommerce_blocks_loaded钩子未触发

WooCommerce Store API扩展钩子未触发问题解决

确认WooCommerce Blocks插件状态

woocommerce_blocks_loaded是WooCommerce Blocks插件专属钩子,并非WooCommerce核心自带。如果未安装并激活该插件,这个钩子永远不会触发。

调整代码加载位置

Roots Sage主题的setup.php加载时机可能早于WooCommerce Blocks插件初始化,导致钩子注册时插件还未完成加载。建议将代码迁移到:

  • Sage主题架构下的app/actions.php或app/filters.php(更符合主题规范)
  • 独立的自定义插件文件中(避免主题更新丢失代码)

示例代码(放在app/actions.php):

add_action('woocommerce_blocks_loaded', function () {
    var_dump('woocommerce_blocks_loaded钩子已触发');
    // 后续扩展Store API的代码写在这里
});

检查WooCommerce Blocks版本

确保使用最新稳定版的WooCommerce Blocks插件,旧版本可能存在钩子未定义或触发逻辑异常的情况。

扩展Store API添加自定义CustomerDetails示例

钩子正常触发后,可通过过滤器扩展用户详情字段:

add_action('woocommerce_blocks_loaded', function () {
    add_filter('woocommerce_blocks_rest_api_prepare_customer_details', function ($customer_data, $customer) {
        // 添加自定义字段,例如用户的会员等级
        $customer_data['membership_level'] = get_user_meta($customer->get_id(), 'membership_level', true);
        return $customer_data;
    }, 10, 2);
});

排查插件加载问题

如果钩子仍未触发,可以直接在WooCommerce Blocks插件的src/BlockAssets.php文件中找到do_action('woocommerce_blocks_loaded');代码行,用Xdebug断点验证插件是否执行到该位置,排查插件加载失败的潜在问题。

内容的提问来源于stack exchange,提问作者Admiral Murtho

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 23:52:36