Fonts are a defining attribute of the design of any web site. That features WordPress themes, the place it’s widespread for theme builders to combine a service like Google Fonts into the WordPress Customizer settings for a “traditional” PHP-based theme. That hasn’t fairly been the case for WordPress block themes. Whereas integrating Google Fonts into traditional themes is well-documented, there’s nothing at the moment obtainable for block themes within the WordPress Theme Handbook.
That’s what we’re going to take a look at on this article. Block themes can certainly use Google Fonts, however the course of for registering them is means completely different than what you might need performed earlier than in traditional themes.
What we already know
As I mentioned, there’s little for us to go on so far as getting began. The Twenty Twenty-Two theme is the primary block-based default WordPress theme, and it demonstrates how we are able to use downloaded font information as property within the theme. However it’s fairly unwieldy as a result of it entails a few steps: (1) register the information within the capabilities.php
file and (2) outline the bundled fonts within the theme.json
file.
Since Twenty Twenty-Two was launched, although, the method has gotten easier. Bundled fonts can now be outlined with out registering them, as proven within the Twenty Twenty-Three theme. Nevertheless, the method nonetheless requires us to manually obtain font information and bundle them into the themes. That’s a hindrance that form of defeats the aim of easy, drop-in, hosted fonts which might be served on a speedy CDN.
What’s new
In case you didn’t already know, the Gutenberg challenge is an experimental plugin the place options being developed for the WordPress Block and Web site Editor can be found for early use and testing. In a latest Theme Shaper article, Gutenberg challenge lead architect Matias Ventura discusses how Google Fonts — or another downloaded fonts, for that matter — might be added to dam themes utilizing the Create Block Theme plugin.
This quick video at Be taught WordPress supplies an excellent overview of the Create Block Theme plugin and the way it works. However the backside line is that it does what it says on the tin: it creates block themes. However it does it by offering controls within the WordPress UI that help you create a complete theme, little one theme, or a theme fashion variation with out writing any code or ever having to the touch template information.
I’ve given it a attempt! And since Create Block Theme is authored and maintained by the WordPress.org crew, I’d say it’s one of the best path we’ve got for integrating Google Fonts right into a theme. That mentioned, it’s undoubtedly value noting that the plugin is in lively growth. Which means issues may change fairly rapidly.
Earlier than I get to the way it all works, let’s first briefly refresh ourselves with the “conventional” course of for including Google Fonts to traditional WordPress themes.
The way it was once performed
This ThemeShaper article from 2014 supplies a superb instance of how we used to do that in traditional PHP themes, as is this newer Cloudways article by Ibad Ur Rehman.
To refresh our reminiscence, right here is an instance from the default Twenty Seventeen theme exhibiting how Google fonts are enqueued within the capabilities.php
file.
operate twentyseventeen_fonts_url() {
$fonts_url="";
/**
* Translators: If there are characters in your language that aren't
* supported by Libre Franklin, translate this to 'off'. Don't translate
* into your individual language.
*/
$libre_franklin = _x( 'on', 'libre_franklin font: on or off', 'twentyseventeen' );
if ( 'off' !== $libre_franklin ) ', $font_families ) ),
'subset' => urlencode( 'latin,latin-ext' ),
);
$fonts_url = add_query_arg( $query_args, 'https://fonts.googleapis.com/css' );
return esc_url_raw( $fonts_url );
}
Then Google Fonts is pre-connected to the theme like this:
operate twentyseventeen_resource_hints( $urls, $relation_type ) {
if ( wp_style_is( 'twentyseventeen-fonts', 'queue' ) && 'preconnect' === $relation_type ) {
$urls[] = array(
'href' => 'https://fonts.gstatic.com',
'crossorigin',
);
}
return $urls;
}
add_filter( 'wp_resource_hints', 'twentyseventeen_resource_hints', 10, 2 );
What’s unsuitable with the normal means
Nice, proper? There’s a hitch, nevertheless. In January 2022, a German regional court docket imposed a nice on a web site proprietor for violating Europe’s GDPR necessities. The problem? Enqueuing Google Fonts on the positioning uncovered a customer’s IP tackle, jeopardizing person privateness. CSS-Methods coated this some time again.
The Create Block Theme plugin satisfies GDPR privateness necessities, because it leverages the Google Fonts API to serve solely as a proxy for the native vendor. The fonts are served to the person on the identical web site quite than on Google’s servers, defending privateness. WP Tavern discusses the German court docket ruling and contains hyperlinks to guides for self-hosting Google Fonts.
Learn how to use Google Fonts with block themes
This brings us to immediately’s “fashionable” means of utilizing Google Fonts with WordPress block themes. First, let’s arrange an area take a look at web site. I exploit Flywheel’s Native app for native growth. You should utilize that or no matter you favor, then use the Theme Take a look at Knowledge plugin by the WordPress Themes Staff to work with dummy content material. And, after all, you’ll need the Create Block Theme plugin in there as nicely.
Have you ever put in and activated these plugins? If that’s the case, navigate to Look → Handle theme fonts from the WordPress admin menu.
The “Handle theme fonts” display screen shows an inventory of any fonts already outlined within the theme’s theme.json
file. There are additionally two choices on the prime of the display screen:
- Add Google fonts. This feature provides Google Fonts on to the theme from the Google fonts API.
- Add native fonts. This feature provides downloaded font information to the theme.
I’m utilizing a totally clean theme by WordPress referred to as Emptytheme. You’re welcome to roll together with your individual theme, however I needed to name out that I’ve renamed Emptytheme to “EMPTY-BLANK” and modified it, so there aren’t any predefined fonts and kinds in any respect.
I assumed I’d share a screenshot of my theme’s file construction and theme.json
file to point out that there are actually no kinds or configurations happening.
Let’s click on the “Add Google Fonts” button. It takes us to a brand new web page with choices to decide on any obtainable font from the present Google Fonts API.
For this demo, I chosen Inter from the menu of choices and chosen the 300, Common, and 900 weights from the preview display screen:
As soon as I’ve saved my choices, the Inter font kinds I chosen are mechanically downloaded and saved within the theme’s property/fonts
folder:
Discover, too, how these choices have been mechanically written to the theme.json
file in that screenshot. The Create Block Theme plugin even provides the trail to the font information.
View your entire theme.json
code
{
"model": 2,
"settings": {
"appearanceTools": true,
"structure": {
"contentSize": "840px",
"wideSize": "1100px"
},
"typography": {
"fontFamilies": [
{
"fontFamily": "Inter",
"slug": "inter",
"fontFace": [
{
"fontFamily": "Inter",
"fontStyle": "normal",
"fontWeight": "300",
"src": [
"file:./assets/fonts/inter_300.ttf"
]
},
{
"fontFamily": "Inter",
"fontStyle": "regular",
"fontWeight": "900",
"src": [
"file:./assets/fonts/inter_900.ttf"
]
},
{
"fontFamily": "Inter",
"fontStyle": "regular",
"fontWeight": "400",
"src": [
"file:./assets/fonts/inter_regular.ttf"
]
}
]
}
]
}
}
}
If we go to the Create Block Theme’s predominant display screen and click on the Handle theme fonts button once more, we are going to see Inter’s 300, 400 (Common), and 900 weight variants displayed within the preview panel.
A demo textual content preview field on the prime even means that you can preview the chosen fonts inside the sentence, header, and paragraph with the font dimension choice slider. You’ll be able to take a look at this new function in motion in this GitHub video.
The chosen font(s) are additionally obtainable within the Web site Editor International Types (Look → Editor), particularly within the Design panel.
From right here, navigate to Templates → Index and click on the blue Edit button to edit the index.html
template. We need to open the International Types settings, that are represented as a distinction icon positioned on the top-right of the display screen. Once we click on the Textual content settings and open the Font menu within the Typography part… we see Inter!
Similar factor, however with native fonts
We might as nicely take a look at including native fonts to a theme for the reason that Create Block Theme plugin supplies that choice. The profit is that you need to use any font file you need from no matter font service you favor.
With out the plugin, we’d must seize our font information, drop them someplace within the theme folder, then resort to the normal PHP route of enqueuing them within the capabilities.php
file. However we are able to let WordPress carry that burden for us by importing the font file on the Add native fonts display screen utilizing the Create Block Theme interface. As soon as a file is chosen to add, font face definitions bins are stuffed mechanically.
Despite the fact that we are able to use any .ttf
, .woff
, or .woff2
file, I merely downloaded Open Sans font information from Google Fonts for this train. I snatched two weight variations, common and 800.
The identical auto-magical file administration and theme.json
replace we noticed with the Google Fonts choice occurs as soon as once more once we add the font information (that are performed one by one). Try the place the fonts landed in my theme folder and the way they’re added to theme.json
:
Eradicating fonts
The plugin additionally permits us to take away font information from a block theme from the WordPress admin. Let’s delete one of many Open Sans variants we put in within the final part to see how that works.
Clicking the Take away hyperlinks triggers a warning so that you can affirm the deletion. We’ll click on OK to proceed.
Let’s open our theme folder and examine the theme.json
file. Positive sufficient, the Open Sans 800 file we deleted on the plugin display screen eliminated the font file from the theme folder, and the reference to it’s lengthy gone in theme.json
.
There’s ongoing work taking place
There’s speak happening including this “Font Supervisor” function to WordPress Core quite than needing a separate plugin.
An preliminary iteration of the function is obtainable within the repo, and it makes use of the very same method we used on this article. It must be GDPR-compliant, too. The function is scheduled to land with WordPress 6.3 launch later this yr.
Wrapping up
The Create Block Theme plugin considerably enhances the person expertise on the subject of dealing with fonts in WordPress block themes. The plugin permits us so as to add or delete any fonts whereas respecting GDPR necessities.
We noticed how choosing a Google Font or importing an area font file mechanically locations the font within the theme folder and registers it within the theme.json
file. We additionally noticed how the font is an obtainable choice within the International Types settings within the Web site Editor. And if we have to take away a font? The plugin completely takes care of that as nicely — with out touching theme information or code.
Thanks for studying! If in case you have any feedback or solutions, share them within the feedback. I’d like to know what you consider this attainable path for font administration in WordPress.
Extra assets
I relied on a whole lot of analysis to put in writing this text and thought I’d share the articles and assets I used to give you extra context.