WordPress注册多个自定义区块(Block)报错求助
问题排查与解决
错误原因分析
从报错路径能看到,WordPress查找index.asset.php时出现了重复嵌套的路径:/blocks/image-link/build/image-link/build/image-link/,这说明你注册区块时指定的路径层级错误,导致系统去不存在的目录查找必要文件。
解决步骤
1. 确认正确的区块文件夹结构
你的主题目录下,区块应是两个独立目录,每个目录包含src(源码)和build(编译后文件):
wp-content/themes/你的主题/ └── blocks/ ├── image-link/ │ ├── src/ │ └── build/ # 编译后需生成index.asset.php、index.js等文件 └── video-popup/ ├── src/ └── build/
2. 修正区块注册代码
你当前的注册路径多嵌套了一层build/image-link,需改为直接指向每个区块的build目录:
function register_custom_blocks() { // 指向image-link区块的编译目录 register_block_type( THEME_PATH . '/blocks/image-link/build' ); // 指向video-popup区块的编译目录 register_block_type( THEME_PATH . '/blocks/video-popup/build' ); }; add_action('init', 'register_custom_blocks');
3. 确保区块已正确编译
- 每个区块的
src目录必须经过编译(通常执行npm run build命令),生成build目录及其中的index.asset.php、index.js等文件,这是WordPress加载区块的必需文件。 - 不要直接指向
src目录,源码目录没有生成WordPress需要的资源映射文件。
4. 验证常量THEME_PATH的正确性
确认THEME_PATH常量准确指向主题根目录,也可以用WordPress内置函数替代自定义常量,避免路径错误:
// 父主题用get_template_directory(),子主题用get_stylesheet_directory() register_block_type( get_template_directory() . '/blocks/image-link/build' );
内容的提问来源于stack exchange,提问作者frank astin
相关产品推荐
相关产品推荐

