WordPress自定义区块未在block inserter中显示 求排查解决方案
问题根源
你代码里的核心错误是wp_register_script传入了服务器本地文件路径作为脚本地址,而非前端可访问的URL,浏览器无法加载到对应的区块JS文件,所以区块不会出现在插入器中。
修复方案
- 替换PHP中
wp_register_script的路径参数,把WP_PLUGIN_DIR改成plugins_url(),修改后的PHP代码如下:
add_action('init', function() { $asset_file = include( WP_PLUGIN_DIR . '/ghs-custom-blocks/assets/js/landing-page-block.asset.php'); wp_register_script('ghs-landing-page', // 这里改成插件URL路径,不是服务器本地路径 plugins_url( '/ghs-custom-blocks/assets/js/landing-page-block.js' ), $asset_file['dependencies'], $asset_file['version'] ); register_block_type('ghs/landing-page-block', [ 'api_version' => 2, 'editor_script' => 'ghs-landing-page', ]); });
- 额外验证点:
- 确认
landing-page-block.asset.php文件是编译JS时自动生成的,存在且内容正确(包含依赖数组和版本号) - 打开编辑器控制台,查看是否有404错误或JS报错,如果还有报错可以对应排查依赖缺失问题
- 清除站点缓存和浏览器缓存后重新打开编辑器测试
内容的提问来源于stack exchange,提问作者elliott_l
相关产品推荐
相关产品推荐

