在元素末尾之后如何加载脚本?

时间:2018-09-16 08:09:21

标签: javascript html wordpress elementor

我一直在尝试弄清楚Wordpress中的Elementor(和Elementor Pro)插件正在做什么,以使其脚本最终加载到正文中,因为我的插件Script需要在这些插件之后加载。它需要在主体标签之前加载。

<script type='text/javascript' src='https://example.com/wp-content/plugins/elementor/assets/lib/swiper/swiper.jquery.min.js?ver=4.4.3'></script>
<script type='text/javascript'>
/* <![CDATA[ */
var elementorFrontendConfig = {"isEditMode":"","is_rtl":"","breakpoints":{"xs":0,"sm":480,"md":768,"lg":1025,"xl":1440,"xxl":1600},"urls":{"assets":"https:\/\/example.com\/wp-content\/plugins\/elementor\/assets\/"},"settings":{"page":[],"general":{"elementor_global_image_lightbox":"yes","elementor_enable_lightbox_in_editor":"yes"}},"post":{"id":406,"title":"Chat","excerpt":""}};
/* ]]> */
</script>
<script type='text/javascript' src='https://example.com/wp-content/plugins/elementor/assets/js/frontend.min.js?ver=2.2.1'></script>
</body>
</html>

我尝试增加入队脚本的优先级:

add_action( 'wp_enqueue_scripts', 'ajax_chat_enqueue_scripts',999999,1);

然后我在页脚的末尾加入'footer = true':

wp_enqueue_script( 'chat-post', plugins_url( '/chat-post.js', __FILE__ ), null, null, true );

但是我的脚本仍然不会在frontend.min.js脚本之后显示。

我已经用Google搜索了这个主题,但是最后得到了关于如何在页脚中添加脚本的相同答案。 Elementor到底在强迫他们的脚本做些什么,这根本没有。

我找到了一个解决方案:将脚本排入我的插件,如下所示:

add_action( 'elementor/frontend/after_enqueue_scripts', 'ajax_chat_enqueue_scripts', 999999, 1);

但是,这看起来像是骇客。 我想用'wp_enqueue_scripts'标签解决它。

1 个答案:

答案 0 :(得分:1)

如果您的脚本依赖于其他一个或多个脚本,并且必须在这些脚本之后插入才能正常工作,则在wordpress中,您可以使用wp_enqueue_script()并传递依赖项数组(wp_enqueue_script中的第三个参数$ deps),您的脚本取决于此方法。

wp_enqueue_script( string $handle, string $src = '', array $deps = array(),
 string|bool|null $ver = false, bool $in_footer = false )

示例:

wp_register_script('myScript', get_template_directory_uri() . '/javascripts/myscript.js',
 array('jquery','bootstrap'), null, true );

在上面的示例中,myscript取决于jquery和bootstrap脚本。

或者出于任何原因,如果您想再次插入脚本,请尝试以下操作:

function my_scripts() {
        wp_register_script('myscript', get_template_directory_uri() . '/javascripts/myscript.js', null, null, true );
        wp_enqueue_script('myscript');
}
add_action( 'wp_enqueue_scripts', 'my_scripts', 20, 1)

播放并更改wp_enqueue_scripts钩子的add_action方法的$ priority参数