同一页面添加多个相同自定义Gutenberg区块仅首个显示如何解决?
问题原因
你的自定义Gutenberg区块多实例渲染异常的核心原因是动态渲染回调中错误使用了include_once加载模板文件:include_once的特性是同一文件在PHP进程的整个生命周期内只会被加载一次,当页面添加多个同类型区块时,首次渲染完成后后续的渲染回调调用include_once不会重复加载template.php,因此不会输出任何内容,最终只有首个区块能正常显示。
修复方案
修改theme/blocks/sst_button/sst_button.php中的渲染回调函数,将include_once替换为include即可:
function sst_button_dynamic_render_callback( $attributes, $content ) { ob_start(); // 替换include_once为include,每次渲染都加载模板输出内容 include __DIR__ . "/template.php"; return ob_get_clean(); }
修改后保存文件,重建区块资源即可解决多实例显示异常的问题。
内容的提问来源于stack exchange,提问作者Jonatanbs
相关产品推荐
相关产品推荐

