2 回答
TA貢獻1872條經(jīng)驗 獲得超4個贊
我編輯你的課程,請檢查:
class WP_scriptDefer
{
private $scripts = [
'bootstrap.min.js',
'lazyload.min.js',
'viewportchecker.min.js',
'universal-parallax.min.js',
];
public function __construct()
{
$this->init();
}
public function init()
{
add_filter('script_loader_tag', [ $this, 'deferScripts'], 10, 3);
}
public function deferScripts( $tag, $handle, $src )
{
foreach( $this->scripts as $script ){
if( true === strpos($tag, $script) ){
return str_replace('src', 'defer="defer" src', $tag);
}
}
return $tag;
}
}
new WP_scriptDefer;
TA貢獻1820條經(jīng)驗 獲得超10個贊
一天后,也感謝 Dmitry 的建議,我找到了讓插件工作的正確方法。數(shù)組腳本需要包含在wp_enqueue_script()每個腳本內(nèi)部分配的名稱,而不是文件名。這在網(wǎng)絡(luò)上不是很清楚,因為通常此過濾器直接應(yīng)用于function.php主題內(nèi)部。這是完整的工作代碼:
<?php
class WP_deferScripts {
private $defer_scripts = [
'bootstrap',
'lazyload',
'swiper',
];
public function __construct()
{
add_filter( 'script_loader_tag', [$this, 'deferScripts'], 10, 2);
}
public function deferScripts( string $tag, string $handle ) : string
{
#var_dump($handle, $tag);
foreach( $this->defet_scripts as $script ){
if( $script === $handle ){
return str_replace('src', 'defer="defer" src', $tag);
}
}
return $tag;
}
}
?>
- 2 回答
- 0 關(guān)注
- 164 瀏覽
添加回答
舉報
