FSE主题导航区块添加短代码不显示,求助排查原因
问题原因及解决方案
核心问题1:Shortcode区块的属性名错误
core/shortcode区块的正确属性不是text,而是shortcode,且属性值需要是带方括号的完整短代码格式(比如[fk_cart_menu]),你之前用的属性名和格式不符合区块的要求,导致短代码无法被解析。
核心问题2:直接插入数组而非WP_Block实例
block_core_navigation_render_inner_blocks钩子接收的$inner_blocks是WP_Block_List对象,它内部存储的是WP_Block实例,而非单纯的数组。直接插入数组会导致区块无法被正确渲染。
修正后的代码
add_filter( 'block_core_navigation_render_inner_blocks', function( $inner_blocks ) { // 创建Shortcode区块的配置数组 $shortcode_block_config = [ 'blockName' => 'core/shortcode', 'attrs' => [ 'shortcode' => '[fk_cart_menu]', // 修正属性名和格式 ], 'innerBlocks' => [], ]; // 创建WP_Block实例并添加到区块列表 $shortcode_block = new WP_Block( $shortcode_block_config ); $inner_blocks->offsetSet( null, $shortcode_block ); return $inner_blocks; } );
额外验证步骤
- 先单独测试短代码是否能正常输出:在主题模板中添加
echo do_shortcode('[fk_cart_menu]');,确认有内容输出,排除短代码本身的问题。 - 清除WordPress缓存(包括页面缓存、区块缓存),避免旧缓存导致修改不生效。
内容的提问来源于stack exchange,提问作者Dail
相关产品推荐
相关产品推荐

