当没有注册的脚本可以挂接时如何wp_add_inline_script?

问题描述 投票:0回答:2

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)' 
);

这可以吗?

wordpress wordpress-theming
2个回答
7
投票

要将脚本放在样式之前,我将使用高优先级的操作钩子

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>
标签之前即可。


0
投票

添加内联 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
操作上运行。

© www.soinside.com 2019 - 2024. All rights reserved.