如何以WordPress的方式加载一个类型为type=“MODULE”的javascript文件?

时间:2020-05-08 作者:Robbiegod

通常,当我要加载javascript文件时,我会从函数中加载它们。使用以下代码的php文件:

wp_deregister_script(\'site-js\'); 
wp_register_script(\'site-js\', get_stylesheet_directory_uri().\'/js/site.js\', array(\'jquery\'), \'0.0.3\', true); 
wp_enqueue_script(\'site-js\');
前几天,我下载了axios,并试图将其加载到我的wordpress主题中。在另一个javascript文件中,我尝试像这样导入axios:

import axio from \'axios\'
我一直收到以下错误消息:未捕获语法错误:无法在模块外使用import语句

我在谷歌上搜索了一下,并将这段代码放在了我的函数文件中:

add_filter(\'script_loader_tag\',\'add_type_to_script\', 10, 3);
function add_type_to_script($tag, $handle, $source){
    if (\'ajaxloadmore\' === $handle) {
        $tag = \'<script type="text/javascript" src="\'. $source .\'" type="module"></script>\';
    } 
    return $tag;
}
从我看到的情况来看,这确实将type=“module”添加到了我的脚本标记中。我可以在查看页面源代码时看到它。但我注意到的一件事是,在检查元素时,我没有在脚本标记上看到type=“module”。这似乎也无法修复错误消息。

我的朋友建议我试试这个,而不是从“axios”导入axios;

const axios = window.axios;
现在,我所做的都在我的页面上了。php我在get\\u footer()函数的正上方添加了脚本标记。现在看起来是这样的:

<?php
$axsrc = get_stylesheet_directory_uri().\'/js/axios/axios.min.js\';
$src = get_stylesheet_directory_uri().\'/js/ajaxloadmore.js\';
?>
<script src="<?php echo esc_url($axsrc); ?>"></script>
<script type="module" src="<?php echo esc_url($src); ?>"></script>
我不喜欢这个解决方案,因为我喜欢从函数文件中注册和加载脚本,以便能够从一个地方管理它们。

有没有人对我有什么建议可以让这一切顺利进行?我需要将type=“module”添加到脚本标记中,并希望在我的函数中注册这些脚本。php。我该怎么做?

1 个回复
最合适的回答,由SO网友:Robbiegod 整理而成

下面是我现在用来添加type=”的最后一段代码;“模块”;到我的脚本。

wp_register_script(\'my-script\', get_theme_file_uri(\'/js/script.js\'), [\'axios\'], \'1.0\');
wp_enqueue_script(\'my-script\');

add_filter("script_loader_tag", "add_module_to_my_script", 10, 3);
function add_module_to_my_script($tag, $handle, $src)
{
    if ("my-script" === $handle) {
        $tag = \'<script type="module" src="\' . esc_url($src) . \'"></script>\';
    }

    return $tag;
}

相关推荐

初学者问题:通过管理Web界面访问Functions.php以导入自定义帖子类型?

是否可以访问这些功能。php文件仅仅使用管理web界面?我正在尝试访问以前创建的(手动编码的)自定义帖子类型,我不得不跳过很多障碍,因为我无法访问函数中的代码。php文件。我已经浏览了很多帮助页面,但建议的步骤似乎总是涉及到函数。php文件(我无法访问)或使用插件中的导入/导出工具,该插件首先创建了自定义帖子类型(据我所知,没有使用任何插件)。这似乎是一个非常基本的问题,但我一辈子都想不出来。任何帮助都将不胜感激!