Het stapsgewijs leren ontwikkelen van WordPress-thema's: een complete handleiding, van basisbeginselen tot praktijkervaring.

3 minuten leestijd
2026-03-18
2026-06-03
2,198
Ik verdien commissies wanneer je via de onderstaande links winkelt, zonder dat dit extra kosten voor jou met zich meebrengt.

Basics van WordPress-themaontwikkeling en het opzetten van een omgeving

Voordat je met het schrijven van code begint, is het van belang een stabiele ontwikkelomgeving op te zetten. Een professionele ontwikkelomgeving zorgt niet alleen voor meer efficiency, maar helpt je ook om de beste praktijken te volgen. Voor het ontwikkelen van WordPress-themes raden we sterk aan om lokale ontwikkelingshulpmiddelen te gebruiken, zoals Local by Flywheel, XAMPP of MAMP. Deze hulpmiddelen simuleren op je persoonlijke computer een volledige serveromgeving, inclusief PHP, MySQL en Apache/Nginx.

Volgens de beschrijving moet je eerst een nieuwe versie van WordPress installeren in je lokale omgeving. Dit zorgt ervoor dat je ontwikkelingswerk geen invloed heeft op de online website en dat je vrij kunt testen en debuggen. Nadat de installatie is voltooid, moet je je concentreren op het begrijpen van de directorystructuur van het ontwikkelde thema. Een standaard WordPress-thema bevat ten minste twee bestanden:style.cssindex.phpDaarvan zijn erstyle.cssDe bestanden zijn niet alleen sjablonen; hun belangrijkste rol is om meta-informatie te bieden voor je thema.

Je moet...style.cssIn de commentaarblok bovenin het bestand worden de naam van het thema, de auteur, een beschrijving, de versienummer en de licentiegegevens opgegeven. Dit is de enige manier voor WordPress om je thema te herkennen. Hier is een voorbeeld van basistekst voor de headertabel van een stijlboek:

Aanbevolen leesmateriaal Wil je leren hoe je WordPress-themes ontwikkelt? Een volledig praktisch handboek om van nul naar expertniveau te komen.

/*
Theme Name: My Custom Theme
Theme URI: https://example.com/my-theme
Author: Your Name
Author URI: https://example.com
Description: A custom WordPress theme built from scratch.
Version: 1.0.0
License: GPL v2 or later
Text Domain: my-custom-theme
*/

Naast de twee bovengenoemde vereiste bestanden bevat een volledig functionerend thema meestal ook andere template-bestanden.header.phpfooter.phpsidebar.phptefunctions.phpJe kunt een nieuwe map (bijvoorbeeld “my-custom-theme”) maken in de map wp-content/themes om deze bestanden op te slaan. Vergeet niet om het net gecreëerde lege thema te activeren in het WordPress-beheerpaneel, onder “Uiterlijk” -> “Thema’s”. Dit is het startpunt voor alle vervolgende ontwikkelingswerkzaamheden.

UltaHost WordPress-hosting
30-daagse garantie voor het terugbetalen van het geld, onbeperkt bandbreedte- en databestand, gratis DDoS-beveiliging, en een prijsvoordeel van 50% bij een aankoop van 3 jaar.

Core template files en thema-hierarchie

Het sterke themasysteem van WordPress is gedeeltelijk te danken aan de duidelijke hiërarchie van templates. Dit systeem bepaalt welke PHP-templatebestand WordPress automatisch zal gebruiken om de inhoud van verschillende soorten pagina's op de website weergeven. Het begrijpen van deze hiërarchie is essentieel voor het creeren van flexibele en functionele thema's.

Het meest fundamentele templatebestand is…index.phpDit is het back-upbestand voor alle pagina’s. Als WordPress geen specifiekere template kan vinden, wordt dit bestand gebruikt. Om echter een verschillende lay-out voor de website te realiseren, maken we specifiekere templates. Bijvoorbeeld wanneer de blogartikelen worden weergegeven (op de homepagina), zal WordPress eerst naar deze specifieke templates kijken.front-page.phphome.phpWanneer je een enkele blogpost bezoekt, zal het systeem op zoek gaan naar…single.phpWanneer een statische pagina wordt bezocht, zal het programma op zoek gaan naar…page.php

Om de inhoud van de pagina's te modulariseren, gebruiken we...get_header()get_footer()get_sidebar()Je kunt template-taggen gebruiken om gedeelde onderdelen van je code in te voegen. Dit betekent dat je…header.phpHet bestand moet alle HTML-code bevatten die zich aan het begin van de website bevindt, tot de plek waar het belangrijkste inhoud begint. Dit omvat meestal de inhoudsopgave, de inhoudelijke secties en eventuele formulieren of andere interactieve elementen.<head>Deel van de inhoud, website-identificatie en het hoofdmenu.footer.phpDit bevat alle delen die volgen op het einde van de belangrijkste inhoud, zoals auteursrechtnieuws en het invoegen van scripts.

Een typisch…index.phpDe structuur van de bestanden is als volgt:

Aanbevolen leesmateriaal Ultimate Guide to WordPress Theme Development: From Principles to Practical Applications

<?php get_header(); ?>

<main id="primary" class="site-main">
    <?php
    if ( have_posts() ) :
        while ( have_posts() ) :
            the_post();
            // 显示每篇文章的内容
        endwhile;
    else :
        // 没有找到文章时的内容
    endif;
    ?>
</main>

<?php get_sidebar(); ?>
<?php get_footer(); ?>

Een custom page template maken

Soms moet je voor een bepaalde pagina een geheel andere lay-out ontwerpen. In dat geval kun je een aangepaste pagina-template maken. Voeg bovenin een PHP-templatebestand een specifiek commentaarblok toe om deze te declareren als een pagina-template. Hier is een voorbeeld: maak een template met de naam “volledig breed scherm”:

<?php
/**
 * Template Name: 全宽页面
 * Description: 一个没有侧边栏的全宽页面模板。
 */
get_header(); ?>

Sla deze bestand op als:template-fullwidth.phpDaarna, wanneer je de pagina bewerkt in de WordPress-beheeromgeving, kun je in het drop-down-menu “Template” onder “Pagina-eigenschappen” de optie “Volledig breedte” kiezen.

Themafuncties en WordPress-cycli

functions.phpDe bestand is het “motorhuis” van je thema; hier worden functies van het thema toegevoegd, menu’s geregistreerd, een toolgebied gecreëerd, speciale afbeeldingen geactiveerd, en worden sjablonen en scriptbestanden geïnstalleerd. Dit bestand wordt automatisch geladen wanneer het thema wordt geïnstalleerd. Door de verschillende mogelijkheden die WordPress biedt…add_theme_support()Functies en hooks bieden je de mogelijkheid om de mogelijkheden van een thema aanzienlijk uit te breiden.

hosting.com gedeelde hosting
Hoge prestaties met AMD EPYC CPU's, NVMe SSD opslag en LiteSpeed, 24/7 deskundige interne ondersteuning, geavanceerde beveiligingsmaatregelen waaronder SSL, bescherming tegen brute kracht, malware en DDoS, besparingen tot 73%

Een belangrijke functie is het registreren van een navigatiemenu. Dit biedt de webbeheerder de mogelijkheid om de inhoud van het menu te beheren via het interfejs “Uiterlijk” -> “Menu” in het backend. Je moet dit dus op de juiste manier instellen.functions.phpGebruikt in het Chinees (vereenvoudigd)register_nav_menus()Een functie wordt gebruikt om de positie van de menu-items aan te geven.

function my_custom_theme_setup() {
    register_nav_menus(
        array(
            'primary' => __( '主导航菜单', 'my-custom-theme' ),
            'footer'  => __( '页脚菜单', 'my-custom-theme' ),
        )
    );
    // 启用文章和页面的特色图像功能
    add_theme_support( 'post-thumbnails' );
    // 为文章摘要添加支持
    add_theme_support( 'excerpt' );
}
add_action( 'after_setup_theme', 'my_custom_theme_setup' );

Verstehen en gebruiken van WordPress-cycles

Al het dynamische content wordt geproduceerd met behulp van de “WordPress-loop”. Dit is een PHP-codestructuur die controleert of er artikelen (of andere pagina’s) op de huidige pagina zijn die moeten worden weergegeven. Als dat het geval is, wordt iedere artikel doorlopen en wordt het inhoud ervan afgeleverd. De loop vormt de kern van het template-bestand. Hier is een voorbeeld…index.phparchive.phpEen voorbeeld van een standaardcyclus die wordt gebruikt in...

<?php if ( have_posts() ) : ?>
    <div class="posts-list">
        <?php while ( have_posts() ) : the_post(); ?>
            <article id="post-<?php the_ID(); ?>" no numeric noise key 1009>
                <h2><a href="/nl/</?php the_permalink(); ?>"><p><strong>Hallo wereld!</strong></p></a></h2>
                <div class="entry-meta">
                    <?php the_time( 'Y年m月d日' ); ?>
                </div>
                <div class="entry-content">
                    <p><strong>Het volledige artikel is hier te lezen.</strong></p>
                </div>
            </article>
        <?php endwhile; ?>
    </div>
    
    <p><?php _e( '抱歉,没有找到符合条件的文章。', 'my-custom-theme' ); ?></p>
<?php endif; ?>

Binnen een loop kun je een reeks template-taggen gebruiken, bijvoorbeeld:the_title()the_content()the_excerpt()the_permalink()Op de pagina van een enkele artikkel worden de volgende details weergegeven:single.phpIn deze tekst gebruikt u meestal…the_content()Output: De volledige inhoud van het artikel.

Aanbevolen leesmateriaal WordPress-themaontwikkeling: een volledig handboek van beginner tot expert

Stijl, scripts en thema's aanpassen

Een modern WordPress-thema moet de inlezing van CSS- en JavaScript-bestanden op de juiste manier verwerken en rekening houden met de behoeften van gebruikers om het thema aan te passen. De beste praktijk is om…wp_enqueue_style()wp_enqueue_script()Er zijn functies beschikbaar om resources in een rij te zetten, waardoor de afhankelijkheden tussen deze resources correct worden gehandhaafd en dubbele laden worden voorkomen.

Je moet...functions.phpEen functie maken in 'China' en deze gebruiken...wp_enqueue_scriptsEen haak om het te bevestigen.

InterServer gedeelde hosting
Shared hosting $2.50 USD per maand, eerste maand $0.1 USD promo code tryinterserver, 461 cloud apps scripts, een klik te installeren.
function my_custom_theme_scripts() {
    // 引入主样式表
    wp_enqueue_style( 'my-custom-theme-style', get_stylesheet_uri(), array(), wp_get_theme()->get( 'Version' ) );
    // 引入自定义JavaScript文件
    wp_enqueue_script( 'my-custom-theme-navigation', get_template_directory_uri() . '/js/navigation.js', array(), wp_get_theme()->get( 'Version' ), true );
}
add_action( 'wp_enqueue_scripts', 'my_custom_theme_scripts' );

Implementeren van ondersteuning voor customizers

De WordPress-themaker is een krachtig hulpmiddel dat gebruikers in real time de instellingen van een thema kunnen bekijken en bewerken, zoals de website-titel, kleuren, achtergrondafbeelding en meer. Door de instellingen van je thema te integreren in de themaker, kun je de gebruikerservaring aanzienlijk verbeteren.

Het implementeren van customizers houdt voornamelijk in het gebruik van…WP_Customize_ManagerKlasse. Je kunt...functions.phpMaak in [programmeeringsomgeving] een functie die door...customize_registerEr zijn ‘hooks’ beschikbaar om instellingen en controlelementen toe te voegen. Als voorbeeld: je kunt een optie toevoegen om de achtergrondkleur te bepalen.

function my_custom_theme_customize_register( $wp_customize ) {
    // 添加一个设置项(存储在数据库中)
    $wp_customize->add_setting( 'background_color', array(
        'default'           => '#ffffff',
        'sanitize_callback' => 'sanitize_hex_color',
        'transport'         => 'postMessage', // 支持实时预览
    ) );
    // 添加一个颜色选择器控件(显示在定制器界面)
    $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'background_color', array(
        'label'    => __( '背景颜色', 'my-custom-theme' ),
        'section'  => 'colors',
    ) ) );
}
add_action( 'customize_register', 'my_custom_theme_customize_register' );

En vervolgens moet je…header.phpOf in een inline-stijl.get_theme_mod()De functie haalt deze waarde op en vertaalt deze naar CSS.

<style type="text/css">
    body {
        background-color: <?php echo esc_attr( get_theme_mod( 'background_color', '#ffffff' ) ); ?>;
    }
</style>

Samenvatting

Het ontwikkelen van WordPress-themes is een geleidelijk proces dat begint met het opzetten van een omgeving, het begrijpen van de structuur van templates, het schrijven van essentiële functies en het realiseren van interacties met gebruikers. Het is belangrijk om de basisvaardigheden onder de knie te krijgen, zoals het maken van de simpelste templates.style.cssindex.phpVanaf het begin van het proces tot het behouden van voldoende ervaring met het gebruiken van template-taggen en WordPress-cycli om dynamische inhoud te genereren, vormt dit de basis voor het bouwen van aangepaste thema's.functions.phpDe mogelijkheid om bestanden te registreren, menuden en kleine hulpmiddelen te gebruiken, samen met het correct invoeren van bronnen via het wp_enqueue-systeem, zorgt voor de stabiliteit en prestaties van het thema. Ten slotte zorgt het integreren van thema-opties in de WordPress Customizer voor een intuïtieve en gebruiksvriendelijke instellingsscherm voor websitebeheerders, waardoor het thema nog professioneler en handiger in gebruik wordt. Door deze kernprincipes en stappen te volgen, kun je vanaf nul een krachtig, flexibel ontworpen WordPress-thema bouwen dat voldoet aan moderne standaarden.

Veelgestelde vragen (FAQ)

Moet je PHP leren om een WordPress-thema te ontwikkelen?

Ja, PHP is een essentieel vereiste om WordPress-themes te kunnen ontwikkelen. De kern van WordPress is zelf in PHP geschreven, en alle templatebestanden (.php-bestanden) maken gebruik van PHP-code om dynamisch HTML-content te genereren, WordPress-functies op te roepen en gegevens te verwerken. Hoewel je enkele page-builder-tools kunt gebruiken om het ontwerp van je thema te bepalen, is het zeer belangrijk om vloeiend in PHP te kunnen omgaan als je de structuur, functionaliteit en aangepaste logica van je thema op diepe wijze wilt beheersen.

Hoe ondersteunt mijn thema meerdere talen (internationaal gebruik)?

Om je thema te ondersteunen voor meerdere talen, moet je het internationaaliseren (i18n). De belangrijkste methode is om alle tekststringen die in het thema worden weergegeven aan de gebruiker te omringen met de vertaalfuncties die WordPress biedt. De meest gebruikelijke functie hiervoor is…()Gebruikt om de vertaalde tekst weer te geven.()Dit wordt gebruikt om de vertaalde tekst terug te geven. Je moet...functions.phpGebruikt in het Chinees (vereenvoudigd)load_theme_textdomain()Er is een functie beschikbaar om vertaalfailen te laden. Vervolgens kan software als Poedit worden gebruikt om een .pot-templatefile te genereren, waarna vertalers de corresponderende .mo-failen voor de gewenste taal (bijvoorbeeld zh_CN) kunnen maken. Zorg ervoor dat…style.cssIn de tekst domein en alle WordPress-functieoproepen moet een consistente tekst domein worden gebruikt; dit is meestal de naam van je themadirectory.

Hoe zorg ik ervoor dat mijn thema voldoet aan de officiële vereisten van WordPress en kan ik het indienen in het themadirectory?

Om je thema te laten voldoen aan de vereisten en het in te dienen bij de officiële WordPress-themacatalogus, moet je je strikt houden aan de standaarden voor thema-evaluatie. Dit omvat: de code moet voldoen aan de WordPress-coderingsstandaarden en PHP-best practices; zorg ervoor dat het thema veilig is en dat alle dynamische gegevens correct worden geëscape en ontsmet; het moet volledig functioneel zijn en niet afhankelijk zijn van specifieke plug-ins van derden om te werken; de front-end code moet responsief en toegankelijk zijn; en je moet een open source-licentie gebruiken die compatibel is met GPLv2 of een latere versie. Tijdens het ontwikkelingsproces kun je de Theme Check-plug-in gebruiken voor een eerste beoordeling. Lees vóór indiening de officiële handleiding voor themaontwikkeling en de beoordelingslijst grondig door en volg de instructies op de indieningspagina van WordPress.

Wat is het verschil tussen een subthema en een hoofdthema, en wanneer moet je een subthema gebruiken?

Een ‘parent theme’ (moedertema) is een volledig functionerend en onafhankelijk WordPress-thema. Een ‘child theme’ (kindertema) is afhankelijk van een bepaald parent theme; het erft alle functies, stijlen en templatebestanden van het parent theme en biedt de mogelijkheid om deze te bewerken of nieuwe functies toe te voegen, zonder dat de originele bestanden van het parent theme hoeven te worden veranderd. Je moet een child theme gebruiken wanneer je een bestaand thema (met name een populairst of framework-gebaseerd thema) wilt aanpassen. De voordelen hiervan zijn dat je aangepaste code (die zich in het child theme bevindt) niet verloren gaat wanneer het parent theme wordt bijgewerkt, waardoor het updaten veilig en probleemloos verloopt. Om een child theme te creeren, hoef je alleen een bestand te maken dat de nodige header-informatie bevat.style.cssDe bestanden worden vervolgens verwerkt en geüpload.@importOf de stijlen van het parent-thema worden geladen door in de rij te staan en te wachten op hun beurt.