为何wp_add_inline_script函数返回false且无法添加JS代码?
问题原因及解决办法
核心问题:脚本Handle错误
你传入wp_add_inline_script的第一个参数是wp-block-navigation-view-js,但这是页面上脚本标签的ID,不是WordPress注册该脚本时用的Handle。
WordPress注册脚本时的Handle是wp-block-navigation-view,输出到前端时会自动在Handle后加上-js作为script标签的ID。你用了错误的Handle,导致函数找不到目标脚本,返回false。
修正步骤
- 修改
wp_add_inline_script的第一个参数为正确的Handle:
function bd_dodaj_skrypty() { $result = wp_add_inline_script( 'wp-block-navigation-view', // 移除末尾的-js 'console.log("inline działa")', 'before' ); if ($result) { echo "true"; } else { echo "false"; } }
- 确保钩子执行时机正确(可选但保险)
如果修改Handle后仍返回false,说明你的函数执行时机早于目标脚本的入队时间。可以调整add_action的优先级,让你的函数晚执行:
add_action('wp_enqueue_scripts', 'bd_dodaj_skrypty', 20); // 优先级设为20,晚于默认的10
关键逻辑说明
wp_add_inline_script要求目标脚本必须已经被注册或入队,才能成功添加内联脚本。- 脚本的Handle与前端输出的ID是两个概念:Handle是后台注册时的唯一标识,前端ID是Handle自动追加
-js生成的。
内容的提问来源于stack exchange,提问作者John616
相关产品推荐
相关产品推荐

