wp_add_inline_script
的文档指出:
向已注册的脚本添加额外的代码。
没有注册脚本怎么办? 就我而言,我唯一注册的 JS 位于结束
body
标记之前,并且我想要在头部有一个内联脚本(js 检测)。 具体来说,我希望内联 JS 位于我的样式之前,但位于 <title>
和 <meta>
标签之后。
我尝试将一个空脚本排入队列,然后用它来挂钩我的内联脚本,但这不起作用。 像这样:
wp_enqueue_script( 'theme-js-detection', null, array(), null, false);
wp_add_inline_script( 'theme-js-detection',
'(function(H){H.className=H.className.replace(/\bno-js\b/,"js")})(document.documentElement)'
);
这可以吗?
wp_enqueue_scripts
:
function my_special_inline_script() {
?>
<script>
// your JS code
</script>
<?php
}
add_action( 'wp_enqueue_scripts', 'my_special_inline_script', 1, 1 );
<title>
和 <meta>
应位于此之前,只要按照建议将 wp_head()
直接放置在结束 <head>
标签之前即可。
添加内联 js/css 确实可以这样工作,你只是忘记将虚拟句柄排入队列。 在页眉/页脚操作上触发的顺序的时间可能会有所不同,但如果您确实愿意,可以重新排序。
这两个示例都有效:
wp_register_script( 'boo', null );
wp_enqueue_script( 'boo' );
wp_add_inline_script( 'boo', 'console.log( "hello" );' );
wp_register_style( 'example', null );
wp_enqueue_style( 'example' );
wp_add_inline_style( 'example', 'h1 { color: red; }' );
如果在
init
操作上运行。