如果您打算推迟一个以上的样式表,我发现这种方法是相当可重用的。
把这个放在某个地方
function _changeme_defer_css( $html, $handle ) {
$deferred_stylesheets = apply_filters( \'changeme_deferred_stylesheets\', array() );
if ( in_array( $handle, $deferred_stylesheets, true ) ) {
return str_replace( \'media=\\\'all\\\'\', \'media="print" onload="this.media=\\\'all\\\'"\', $html );
} else {
return $html;
}
}
add_filter( \'style_loader_tag\', \'_changeme_defer_css\', 10, 2 );
<像往常一样加载字体:
function _changeme_load_font_awesome() {
wp_enqueue_style( \'font-awesome\', URI . \'/fonts/font-awesome/css/font-awesome.min.css\' );
}
add_filter( \'wp_enqueue_scripts\', \'_changeme_load_font_awesome\' );
<像这样推迟时间
add_filter( \'changeme_deferred_stylesheets\', function( $handles ) {
$handles[] = \'font-awesome\';
return $handles;
}, 10, 1 );
<如果你想确保它只影响网站面向公众的一面,而不是
wp-admin
, 您可以为添加检查
! is_admin()
以及(特别是对于常用的库,如
Font Awesome
或
Select2
):
add_filter( \'changeme_deferred_stylesheets\', function( $handles ) {
if ( ! is_admin() ) {
$handles[] = \'font-awesome\';
}
return $handles;
}, 10, 1 );
我还更新了
onload
基于Scott Jehl的方法
The Simplest Way to Load CSS Asynchronously (2019)但如果您要这样做,您可能还想阅读;异步CSS“;哈里·罗伯茨的一段
The Fastest Google Fonts (2020)来了解他为什么也建议预加载。