我正在尝试在没有插件的情况下使JS和CSS异步(我知道这是可能的,不需要太多的编码)。
由于我不太懂php,我希望你能在这里帮我一点忙。
我找到了这段代码来处理这类事情,但我真的不知道如何使用它。
function add_async_attribute($tag, $handle) {
$scripts_to_async = array(\'my-js-handle\', \'another-handle\');
foreach($scripts_to_async as $async_script) {
if ($async_script !== $handle) return $tag;
return str_replace(\' src\', \' async="async" src\', $tag);
}
return $tag;
}
add_filter(\'script_loader_tag\', \'add_async_attribute\', 10, 2);
我应该准确地放置什么而不是
my-js-handle
或
another-handle
如果JQuery文件放在此处:
wordpress/wp-includes/js/jquery/jquery.js?ver=1.11.3
?
另外,如果我要放大数组,请这样说:
array(\'my-js-handle\', \'another-handle\', \'one-more\');
我是否需要改变一些东西,请这样说(在
add_filter
):
10, 2);
?
至于css异步化。。。仅仅扩大这个数组并添加我的css地址就足够了吗?
最合适的回答,由SO网友:majick 整理而成
您可以使用handle
,即wp_enqueue_script
WordPress中用于所有脚本的函数。。。(如果以其他方式加载,则应使用此函数。)
jQuery的句柄是<罢工>jquery
罢工>实际jquery-core
现在但排队的每个脚本都有自己的句柄。有点像帖子的“鼻涕虫”。
您可以向该数组添加尽可能多的句柄,而无需更改过滤器参数。(The10, 2
部分是筛选器运行优先级和分别传递给筛选器函数的参数数。)
但是script_loader_tag
过滤排队的脚本,而不是样式表,因此这对CSS文件也适用。
EDIT我认为循环不会按原样工作,因为它会在第一次失败时返回,因此不会检查所有句柄。改用:
foreach($scripts_to_async as $async_script) {
if ($async_script === $handle) {return str_replace(\' src\', \' async="async" src\', $tag);}
}