Blog
Hoe bouw je een aangepast WordPress-blokthema met theme.json: een stapsgewijze handleiding
Leer een blokthema helemaal zelf maken met theme.json om globale stijlen, instellingen en sjablonen te beheren.
Samenvatting
Het bouwen van een aangepast WordPress-blokthema met Full Site Editing (FSE) kan overweldigend lijken, maar theme.json vereenvoudigt het proces. Deze gids leidt je door het opzetten van een minimaal blokthema, het definiëren van globale stijlen zoals kleuren en typografie in theme.json, en het maken van aangepaste sjablonen met blokmarkup. Je leert blokpatronen en stijlvariaties toevoegen, waarmee je een volledig ontwerpbare site creëert zonder PHP-sjabloonbestanden. We behandelen veelgemaakte fouten, zoals het mengen van klassieke en blokthemafuncties, en laten zien hoe je je thema test. Aan het einde heb je een modern, uitbreidbaar blokthema klaar voor productie. Deze aanpak maakt gebruik van de nieuwste mogelijkheden van WordPress voor snellere, meer visuele ontwikkeling.
Inleiding
Full Site Editing (FSE) heeft de ontwikkeling van WordPress-thema's gerevolutioneerd, waardoor je elk deel van je site visueel kunt ontwerpen. Maar veel ontwikkelaars vertrouwen nog steeds op klassieke thema's of worstelen om blokthema's helemaal zelf te maken. De sleutel tot het ontsluiten van de kracht van FSE is theme.json—een configuratiebestand dat globale stijlen, instellingen en sjablonen beheert. Dit artikel biedt een praktische, stapsgewijze handleiding voor het bouwen van een aangepast blokthema met theme.json. Je leert de mapstructuur opzetten, kleurenpaletten en typografiepresets definiëren, aangepaste sjablonen maken met blokmarkup en stijlvariaties toevoegen. Aan het einde heb je een productieklaar blokthema dat eenvoudig te onderhouden en uit te breiden is. Laten we duiken en FSE-ontwikkeling ontraadselen.
Voor een bredere blik op hoe FSE de toekomst van WordPress-ontwerp vormgeeft, bekijk Gutenberg FSE: de toekomst van WordPress-ontwerp in 2026.
1. Een minimaal blokthema opzetten
Een blokthema vereist minimaal twee bestanden: style.css en index.html. Laten we ze maken.
Mapstructuur
Maak een map met de naam my-block-theme in je wp-content/themes/-directory. Plaats daarin:
style.cssindex.html- (optioneel)
theme.json
style.css
Hoewel blokthema's minder afhankelijk zijn van CSS, is style.css nog steeds vereist voor thema-identificatie:
/*
Theme Name: My Block Theme
Theme URI: https://example.com
Author: Your Name
Description: A custom block theme built with theme.json.
Version: 1.0
Requires at least: 5.9
Tested up to: 6.5
Requires PHP: 7.4
License: GPL v2 or later
Text Domain: my-block-theme
*/
De regel Requires at least: 5.9 zorgt ervoor dat het thema werkt met de FSE-functionaliteit.
index.html
Dit is je terugvalsjabloon. Het moet beginnen met blokmarkup. Maak een eenvoudige lay-out:
<!-- wp:template-part {"slug":"header","tagName":"header"} /-->
<!-- wp:group {"layout":{"type":"constrained"}} -->
<div class="wp-block-group">
<!-- wp:post-title /-->
<!-- wp:post-content /-->
</div>
<!-- /wp:group -->
<!-- wp:template-part {"slug":"footer","tagName":"footer"} /-->
Dit gebruikt bloksyntaxis om header- en footer-sjabloondelen op te nemen en geeft de berichttitel en -inhoud weer.
Let op: Blokthema's mogen geen PHP-sjabloonbestanden bevatten zoals
header.phpoffooter.php. Het mengen van klassieke en bloksjablonen verbreekt FSE.
Het thema activeren
Upload de map via FTP of zip-installatie en activeer het. Je zou een lege site moeten zien met je minimale structuur. Vervolgens stijlen we het met theme.json.
2. theme.json beheersen: Globale stijlen en instellingen
theme.json centraliseert alle ontwerpcontroles. Het bevindt zich in de root van je themamap. Laten we er een maken met kleur- en typografie-instellingen.
Basisstructuur
{
"version": 2,
"settings": {
"color": {
"palette": [
{
"slug": "primary",
"color": "#007cba",
"name": "Primary"
},
{
"slug": "secondary",
"color": "#005a87",
"name": "Secondary"
},
{
"slug": "background",
"color": "#ffffff",
"name": "Background"
}
],
"gradients": []
},
"typography": {
"fontFamilies": [
{
"fontFamily": "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",
"slug": "system",
"name": "System"
},
{
"fontFamily": "'Georgia', serif",
"slug": "serif",
"name": "Serif"
}
],
"fontSizes": [
{
"slug": "small",
"size": "14px",
"name": "Small"
},
{
"slug": "medium",
"size": "18px",
"name": "Medium"
},
{
"slug": "large",
"size": "24px",
"name": "Large"
}
]
},
"spacing": {
"padding": true,
"margin": true,
"units": ["px", "em", "rem"]
}
},
"styles": {
"color": {
"background": "var(--wp--preset--color--background)",
"text": "var(--wp--preset--color--primary)"
},
"typography": {
"fontFamily": "var(--wp--preset--font-family--system)",
"fontSize": "var(--wp--preset--font-size--medium)"
}
}
}
Dit definieert een kleurenpalet, lettertypen, lettergroottes en globale stijlen. De var()-functies verwijzen naar CSS-eigenschappen die automatisch door WordPress worden gegenereerd. Gebruikers kunnen deze vervolgens wijzigen in de Site Editor.
Tip: Gebruik CSS-eigenschappen voor consistentie. Vermijd hardcoderen van waarden in CSS-bestanden; laat
theme.jsonde enige bron van waarheid zijn.
3. Aangepaste sjablonen maken
Bloksjablonen zijn HTML-bestanden met blokmarkup. Ze volgen een hiërarchie vergelijkbaar met klassieke sjabloonbestanden. Maak bijvoorbeeld single.html voor afzonderlijke berichten:
<!-- wp:template-part {"slug":"header","tagName":"header"} /-->
<!-- wp:group {"tagName":"main","layout":{"type":"constrained"}} -->
<main class="wp-block-group">
<!-- wp:post-title {"level":1} /-->
<!-- wp:post-featured-image /-->
<!-- wp:post-content /-->
<!-- wp:post-navigation-link {"type":"previous"} /-->
<!-- wp:post-navigation-link {"type":"next"} /-->
</main>
<!-- /wp:group -->
<!-- wp:template-part {"slug":"footer","tagName":"footer"} /-->
Maak op dezelfde manier page.html, archive.html, etc. Je kunt ook aangepaste sjablonen maken door een wp:post-template-blok toe te voegen in een query-lus.
Voor geavanceerde aanpassingen kun je overwegen om aangepaste blokken te bouwen. Leer hoe in Voorbij basisblokken: aangepaste Gutenberg-blokken maken voor verbeterde WordPress-functionaliteit.
Sjabloondelen
Maak een parts/-map voor herbruikbare onderdelen. Bijvoorbeeld header.html:
<!-- wp:group {"tagName":"header","layout":{"type":"flex","flexWrap":"nowrap"}} -->
<header class="wp-block-group">
<!-- wp:site-logo /-->
<!-- wp:navigation {"themeLocation":"primary"} /-->
</header>
<!-- /wp:group -->
En footer.html:
<!-- wp:paragraph {"align":"center"} -->
<p class="has-text-align-center">© 2025 My Site</p>
<!-- /wp:paragraph -->
4. Blokpatronen en stijlvariaties toevoegen
Blokpatronen zijn vooraf ontworpen lay-outs. Definieer ze in een patterns/-map. Maak patterns/hero.php:
<?php
/**
* Title: Hero
* Slug: my-block-theme/hero
* Categories: hero
*/
?>
<!-- wp:cover {"overlayColor":"primary","minHeight":50,"align":"full"} -->
<div class="wp-block-cover alignfull" style="min-height:50vh">
<span aria-hidden="true" class="wp-block-cover__background has-primary-background-color"></span>
<div class="wp-block-cover__inner-container">
<!-- wp:heading {"textAlign":"center","level":1,"style":{"color":{"text":"#ffffff"}}} -->
<h1 class="has-text-align-center has-text-color" style="color:#ffffff">Welkom</h1>
<!-- /wp:heading -->
<!-- wp:paragraph {"align":"center","textColor":"white"} -->
<p class="has-text-align-center has-white-color">Dit is een aangepaste hero-sectie</p>
<!-- /wp:paragraph -->
</div>
</div>
<!-- /wp:cover -->
Stijlvariaties stellen gebruikers in staat om volledige looks te wisselen. Maak styles/default.json en styles/dark.json die thema-instellingen overschrijven.
5. Kanttekeningen en beste praktijken
- Prestaties:
theme.jsonwordt gecacht. Verwijder de cache na wijzigingen. Gebruik dewp_register_theme_json-hook indien nodig. - Achterwaartse compatibiliteit: Blokthema's werken alleen vanaf WordPress 5.9. Als je site oudere versies moet ondersteunen, overweeg dan een hybride aanpak maar vermijd het mengen van sjabloonbestanden.
- Kindthema's: Blokthema's kunnen worden gebruikt als bovenliggende thema's voor klassieke kindthema's, maar niet andersom. Gebruik
templateinstyle.cssom een bovenliggend blokthema aan te geven. - Internationalisering: Gebruik de
__()-functie in PHP-sjabloondelen voor vertaalbare strings. Geef in blokmarkup het tekstdomein op via hettextDomain-attribuut.
Voor meer over beste praktijken voor plugin-ontwikkeling, zie Robuuste WordPress-plug-ins bouwen: een praktische gids voor beste praktijken.
Conclusie
Het bouwen van een aangepast blokthema met theme.json stelt je in staat om een volledig ontwerpbare site te creëren zonder PHP aan te raken. Door deze gids te volgen, heb je een minimaal thema opgezet, globale stijlen gedefinieerd, aangepaste sjablonen gemaakt en patronen toegevoegd. Vergeet niet grondig te testen, vooral voor randgevallen zoals archiefpagina's of aangepaste berichttypen. Naarmate WordPress evolueert, worden blokthema's de standaard. Begin vandaag nog met het benutten van FSE om je workflow te stroomlijnen en klanten ongeëvenaarde flexibiliteit te bieden.
Als je het maken van thema's nog verder wilt versnellen, overweeg dan een tool die een complete site genereert uit een beschrijving. Je kunt bijvoorbeeld je gewenste lay-out beschrijven en binnen enkele minuten een gebruiksklaar blokthema hebben.
Klaar om je blokthema live te zetten? Met een beschrijving in platte tekst kun je een volledig functionele landingspagina of website genereren—geen code vereist.
Sources (5)
- WordPress Architecture: A Complete Guide - Liquid Web
- Essential WordPress Plugin Development Best Practices - Pixel Fish
- WordPress Full Site Editing (FSE) – A Complete Guide | WebOptimo
- Best Practices – Plugin Handbook - WordPress Developer Resources
- The Complete Guide to WordPress REST API Basics - Kinsta
