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

如何独立复刻并维护WooCommerce Block?

解决WooCommerce「Products By Category」区块数据库查询量过高问题

问题背景

我们在网站首页部署了多个WooCommerce官方提供的*「Products By Category」* Gutenberg区块实例,通过Query Monitor插件检测发现数据库查询量异常偏高(约550次);当移除部分或全部该区块实例后,查询量直接降至约80次,确认该区块是查询量过高的核心原因。

原因分析

查看该区块的核心实现代码后发现,它仅缓存需要解析的产品ID,而产品的详细数据每次渲染时都要从数据库重新查询获取。我们尝试修改其render方法,改为直接缓存最终生成的HTML输出,修改后数据库查询量得到了大幅降低,效果符合预期。

当前困境

我们希望通过编写自定义插件或主题的方式来修改这个行为,但尚未找到可行方案:WC Blocks的集成度极高且存在内部依赖,此前曾有将区块单独打包为独立插件的方法,但该方案现已被移除,不再被官方支持。

当前实现方式(需规避反射机制)

目前我们通过以下方式实现了HTML缓存优化,但因使用了反射机制,希望能找到替代方案:

  • 通过JS gutenberg过滤器获取当前声明的render_callback,存储对应的对象引用。
  • 使用PHP ReflectionClass修改并访问对象内部属性,在自定义渲染函数中调用原逻辑。
  • 再次通过JS gutenberg过滤器将区块的render_callback替换为我们的自定义渲染函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 11:35:56