I want to add attribute rel="preload"to custom fonts.css file for fast load fonts
Steps:
- add file fonts.css
- in
bud.config.js
.entry({
...
fonts: ['@styles/fonts'],
})
- in
setup.php
add_action('wp_enqueue_scripts', function () {
bundle('fonts')->enqueue();
}, 100);
In head I have
link rel="stylesheet" id="fonts/0-css" href="...../public/fonts.6ba758.css" media="all"
But I have no idea what to do next((
File name have hash (6ba758) and something like that doesn’t work
Does anyone have any ideas?
ben
2
You need to use the asset
function to read the manifest to determine the hash. See:
This is how I’m adding preload
to fonts on the Roots site:
add_action('wp_head', function () {
$fonts = [
'dankmono-regular',
'public-sans-v11-latin-300',
'public-sans-v11-latin-700',
'public-sans-v11-latin-700italic',
'public-sans-v11-latin-italic',
'public-sans-v11-latin-regular',
];
foreach ($fonts as $font) {
echo '<link rel="preload" href="'.esc_url(asset('fonts/'.$font.'.woff2')).'" as="font" type="font/woff2" crossorigin>';
}
});
2 Likes
aksld
3
Hello,
I have a small question about this.
preload gives better performance, right?
Currently I load my fonts like this:
@font-face {
font-family: "Sofia Pro";
src: url('@fonts/sofiapro/SofiaPro.eot');
src: url('@fonts/sofiapro/SofiaPro.eot?#iefix') format('embedded-opentype'), url('@fonts/sofiapro/SofiaPro.woff2') format('woff2'), url('@fonts/sofiapro/SofiaPro.woff') format('woff'), url('@fonts/sofiapro/SofiaPro.ttf') format('truetype'), url('@fonts/sofiapro/SofiaPro.svg#SofiaPro') format('svg');
font-weight: normal;
font-style: normal;
font-display: swap;
}
it is therefore necessary to add all the files in the piece of code provided by ben?
Thanks !
The font can be loaded faster
Read article