Ultimatumgids voor het ontwikkelen van WordPress-themes: van nul tot een op maat gemaakt template bouwen

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

Development Environment en Basische Bestandsstructuur

Voordat je begint met het bouwen van een WordPress-thema, is het van belang een efficiënte en goed georganiseerde ontwikkelingsomgeving op te zetten. Dit helpt niet alleen bij het ordenen van het code, maar legt ook de basis voor later onderhoud en uitbreidingen. Een standaard WordPress-thema bestaat uit…/wp-content/themes/De mappen in de map volgen bepaalde regels voor de namen en structuur van de onderliggende bestanden.

Core files and directories

Elke WordPress-thema moet ten minste twee bestanden bevatten:index.phpstyle.cssDaarvan zijn erstyle.cssHet is niet alleen een stylesheet, maar ook een soort “identiteitsbewijs” van het thema. De commentaarblok in het begin van het bestand wordt gebruikt om informatie over het thema aan het WordPress-systeem door te geven. Een typisch voorbeeld…style.cssDe inhoud van het bestand begint op de volgende manier:

/*
Theme Name: My Custom Theme
Theme URI: https://example.com/my-theme
Author: Your Name
Author URI: https://example.com
Description: 这是一个从头开始构建的自定义WordPress主题。
Version: 1.0.0
License: GPL v2 or later
Text Domain: my-custom-theme
*/

Naast deze twee essentiële bestanden, bevat een volledig functionerend en goed georganiseerd thema meestal de volgende mappen en bestanden:
* functions.phpDe functionaliteitsbestanden van het thema worden gebruikt om functies toe te voegen, menu's en balken te registreren, en dergelijke.
* header.phpHet header-template van de website.
* footer.phpHet onderste template van de website.
* sidebar.phpSidebar-template.
* page.phpPaginaontwerp (page template).
* single.phpTemplate voor de artikeldetailspagina.
* archive.phpTemplate voor de archiveringspagina van artikelen.
* 404.php404-foutpagina-template.
* search.phpTemplate voor de zoekresultatenpagina.
* assets/Verzeichnis: wordt gebruikt om statische bronnen op te slaan, bevat meestal…css/js/images/Subdirectory's.

Aanbevolen leesmateriaal Van nul beginnen: Een stap voor stap-gids om een eigen WordPress-thema te bouwen

Configuratie van het lokale ontwikkelingsmilieu

Het wordt aanbevolen om lokale serveromgevingssoftware te gebruiken (zoals Local by Flywheel, XAMPP of MAMP) om een ontwikkelingsomgeving op te zetten. Hiermee kun je WordPress, een database (bijvoorbeeld MySQL) en PHP op je eigen computer installeren, waardoor je offline kunt ontwikkelen en debuggen. Dit is veel efficiënter dan direct op een online server te werken. Het is ook een goede praktijk om een versiebeheerssysteem (zoals Git) te gebruiken om je themacode te beheren.

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.

Constructeer een kerntemplate voor het thema

Het kernpunt van het ontwikkelen van WordPress-themes is het systeem met template-lagen. Het systeem kiest automatisch het juiste template-bestand uit, afhankelijk van het type pagina dat de gebruiker bezoekt, om de pagina te weergeven. Het is van belang om deze template-bestanden te begrijpen en correct op te bouwen; dit is essentieel voor het succesvol ontwikkelen van themes.

Header- en footer-template

Header-templateheader.phpVerantwoordelijk voor het genereren van de openingsteil van elke pagina, waaronder meestal de HTML-dokumentatieverklaring.<head>De regio (met titel, karakterset, vensterinstellingen, ingebrachte stijlen en scripts), evenals het logo en de hoofdnavmenu van de website.header.phpAan het eind wordt meestal een bepaalde procedure of functie opgeroepen.<body>De beginpartij van de tag...wp_body_openHook.

Bodemtemplatefooter.phpDeze component is verantwoordelijk voor het weergeven van de onderste del van elke pagina, waaronder de voetnoten, auteursrechtaangegeving, de ingevoerde JavaScript-bestanden, en de mogelijkheid om de pagina te sluiten.<body><html>Taggen.

In andere templatebestanden wordt dit gedaan door…get_header()get_footer()Gebruik functies om deze elementen in te voeren, zodat de structuur van de website consistent is.

Aanbevolen leesmateriaal Hoogwaardige handleiding voor het ontwikkelen van WordPress-thema's: het volledige proces en de beste praktijken voor het maken van een aangepast thema vanaf nul.

Hoofdloop en inhoudsweergave

De “main loop” van WordPress is de kern van het thema en wordt gebruikt om artikelen uit de database te halen en te weergeven. De loop werkt meestal op de volgende manier:if ( have_posts() ) : while ( have_posts() ) : the_post();Structuur: Binnen de loop kun je een reeks template-taggen gebruiken om de inhoud van het artikel af te drukken.the_title()the_content()the_excerpt()the_permalink()the_post_thumbnail()etc.

index.phpAls basis voor een reserve-template moet een volledige cyclische structuur worden opgenomen. Voor specifiekere templates geldt dat…single.php(Gebruikt voor één artikel) Enpage.php(Wanneer gebruikt op een aparte pagina) kan de manier van weergeven binnen de loop worden aangepast naar wens. Bijvoorbeeld:single.phpNormaal gesproken worden de volledige inhoud van het artikel en de lijst met commentaren weergegeven.page.phpIn dat geval wordt alleen de inhoud weergegeven, zonder de publicatiedatum en de informatie over de auteur.

// 在 single.php 中一个典型的主循环示例
if ( have_posts() ) :
    while ( have_posts() ) : the_post();
        ?&gt;
        <article id="post-<?php the_ID(); ?>" no numeric noise key 1004>
            <header class="entry-header">
                <h1 class="entry-title"><p><strong>Hallo wereld!</strong></p></h1>
                <div class="entry-meta">
                    | 作者:
                </div>
            </header>
            <div class="entry-content">
                <?php the_content(); ?>
            </div>
        </article>
        &lt;?php
        // 显示评论区
        if ( comments_open() || get_comments_number() ) :
            comments_template();
        endif;
    endwhile;
endif;

De functionaliteit van je thema kan worden verbeterd door gebruik te maken van functions.php.

functions.phpHet bestand vormt het “bestuurscentrum” van je thema; alle functiecodes die niet direct worden weergegeven in het uiterlijk, moeten hier worden toegevoegd. Het werkt net zoals een altijd actieve plugin.

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%

Registratie van onderwerpen is mogelijk in combinatie met het menu.

passeren (een wetsvoorstel of inspectie enz.)add_theme_support()Je kunt aangeven welke kernfuncties van WordPress je thema ondersteunt. Bijvoorbeeld het gebruiken van een afbeelding als cover voor artikelen, het instellen van een eigen logo en het bepalen van het formaat van artikelen zijn standaardfuncties voor moderne thema's.

function my_theme_setup() {
    // 添加文章特色图像支持
    add_theme_support( 'post-thumbnails' );
    // 添加自定义徽标支持
    add_theme_support( 'custom-logo' );
    // 添加标题标签支持(由WordPress自动管理)
    add_theme_support( 'title-tag' );
    // 添加HTML5标记支持
    add_theme_support( 'html5', array( 'comment-list', 'comment-form', 'search-form', 'gallery', 'caption', 'style', 'script' ) );
}
add_action( 'after_setup_theme', 'my_theme_setup' );

De registratie en het instellen van de navigatieopties worden ook hier gedaan.register_nav_menus()De functie wordt gedefinieerd in een bepaalde plaats (unit), en daarna kun je deze gebruiken.header.phpGebruikt in het Chinees (vereenvoudigd)wp_nav_menu()Roep het op.

Stijlboeken en scripts toevoegen

De juiste manier om het te doen, is om de stijlbestanden en JavaScript-bestanden te distribueren via…wp_enqueue_style()wp_enqueue_script()De functies worden geregistreerd en in een wachtrij geplaatst. Dit zorgt ervoor dat afhankelijkheden correct worden verwerkt, dubbele laden worden voorkomen en dat de functies compatibel zijn met plugins. Deze procedure moet worden uitgevoerd op…wp_enqueue_scriptsHet wordt gedaan aan de haak.

Aanbevolen leesmateriaal Van nul naar honderd: een volledige gids voor het maken van een krachtig, aanpasbaar WordPress-thema.

function my_theme_scripts() {
    // 引入主题的主样式表
    wp_enqueue_style( 'my-theme-style', get_stylesheet_uri(), array(), '1.0.0' );
    // 引入自定义CSS文件
    wp_enqueue_style( 'my-custom-css', get_template_directory_uri() . '/assets/css/custom.css', array(), '1.0.0' );
    // 引入jQuery(WordPress已内置)和自定义JS
    wp_enqueue_script( 'my-custom-js', get_template_directory_uri() . '/assets/js/main.js', array( 'jquery' ), '1.0.0', true ); // true表示在底部加载
}
add_action( 'wp_enqueue_scripts', 'my_theme_scripts' );

Maak aangepaste templates en paginatemplates.

WordPress biedt de mogelijkheid om unieke lay-outs te creeren voor specifieke pagina's of artikelen, voornamelijk door het gebruiken van aangepaste templates en page templates.

Custom artikeltypen en categorieënmallen

Als je met code of plugins een aangepaste artikeltype (bijvoorbeeld “Product”) of een aangepaste categorie (bijvoorbeeld “Product categorie”) hebt geregistreerd, gelden de regels van de template-hiërarchie van WordPress ook hiervoor. Je kunt bijvoorbeeld…single-product.phpOm de weergave van producten op een aparte pagina te kunnen controleren, moet eerst een nieuwe pagina worden gecreëerd.archive-product.phpOm de productlijstpagina te beheren en te kunnen creeren…taxonomy-product-category.phpOm de archiveringspagina's voor bepaalde product categorieën te beheersen, wordt veel flexibiliteit geboden. Dit maakt het mogelijk om complexe contentwebsites (zoals portfolia of winkels) te bouwen.

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.

Condition tags en custom page templates

Voorwaardelijke tags (zoalsis_front_page()is_page()is_single()Dit zorgt ervoor dat je in een template-bestand afhankelijk van verschillende condities verschillende inhoud kunt weergeven. Echter, een nog krachtiger manier is om zelfgemaakte pagina templates te creeren.

Je kunt een PHP-bestand maken in het themadirectory en in het begin van het bestand een specifiek commentaarblock toevoegen om het te declareren als een pagina-template. Vervolgens kun je dit template in het WordPress-administratiepaneel kiezen voor een bepaalde pagina.

<?php
/**
 * Template Name: 全宽页面模板
 * Description: 一个没有侧边栏的全宽度页面模板
 */
get_header(); ?>
<div class="full-width-content">
    <?php
    while ( have_posts() ) : the_post();
        the_content();
    endwhile;
    ?>
</div>
<?php get_footer(); ?>

Daarnaast is sinds WordPress 5.0 de Gutenberg-blockeditor een essentieel onderdeel van het systeem geworden. Je kunt blocktemplates maken om het gebruik van deze editor te versoepelen.block-template-canvas.php) of gebruikmaken vantheme.jsonDeze bestanden bieden de mogelijkheid om thema-stijlen, kleurpaletten en blokken op globale schaal te definiëren, waardoor een modernere en visueel aantrekkelijkere manier van thema-ontwerp wordt mogelijk.

Samenvatting

Het ontwikkelen van een WordPress-thema vanaf nul is een systeematische klus die vereist dat de ontwikkelaar niet alleen PHP, HTML, CSS en JavaScript beheerst, maar ook een diepere kennis heeft van de kernconcepten van WordPress, zoals het template-systeem, de hoofdloop (main loop), hooks en actions, en de verschillende template-taggen. Het proces begint met het opzetten van een gestructureerde directory-indeling, waarna de header-, footer- en kerntemplate-bestanden worden gemaakt.functions.phpOm de functionaliteit te verbeteren en resources correct te laden, wordt uiteindelijk gebruik gemaakt van aangepaste templates en conditionele logica om een complexe paginalegging te realiseren. Door dit proces te volgen, kunt u een aangepast thema creeren dat volledig voldoet aan de designeisen, uitstekend presteert en gemakkelijk te onderhouden is. Hierdoor krijgt u de grootste vrijheid en controle in de wereld van WordPress.

Veelgestelde vragen (FAQ)

Moet het ontwikkelen van een thema altijd vanaf nul beginnen?

Niet altijd. Voor beginners of ontwikkelaars die snel willen starten, is het een goede optie om te beginnen met een bestaande basis-thema (bijvoorbeeld Underscores of _s) of een moeder-thema (zoals Genesis of Astra). Deze thema's beschikken al over een standaard bestandsstructuur en basiscode, waardoor je er gemakkelijk mee kunt werken en het kunt aanpassen naar je eigen wensen. Dit is veel efficiënter dan alles vanaf nul te bouwen.

Mag het bestand `style.css` helemaal leeg zijn?

Nee, dat is niet mogelijk. Hoewel de stijl van het thema kan worden ingesteld als ‘leeg’ (empty), moet de commentaarblock met de themainformatie aan het begin van het bestand wel aanwezig zijn en in het juiste format zijn opgesteld. Anders herkent WordPress je thema niet. De inhoud van deze commentaarblock bepaalt de weergave van informatie als de naam, de auteur en de beschrijving van het thema in de WordPress-beheeromgeving.

Hoe kan ik ervoor zorgen dat mijn thema meerdere talen ondersteunt (internationalisering)?

Je moet de internationale functies van WordPress gebruiken, zoals…__()_e()Vervolgens moet je alle tekststrings die worden vertaald omhullen met deze code.style.cssfunctions.phpHet moet correct worden ingesteld.Text DomainEn gebruik tools als Poedit om dit te realiseren..potTemplatebestanden en de corresponderende….po.moHet is een essentieel kenmerk voor een document met een professioneel onderwerp.

Waarom wordt mijn eigen gemaakte template niet weergegeven in de attributen van de achtergrondpagina?

Controleer eerst of je eigen paginatemplatebestand zich bevindt in de rootmap van het thema. De opmerkingen aan het begin van het bestand moeten in het juiste format zijn opgesteld, met name de regel “Template Name:”. Fouten in de bestandsnaam, de bestandslocatie of het opmerkingenformat kunnen ervoor zorgen dat WordPress het template niet herkent.

Hoe worden thema's die zijn ontwikkeld gepubliceerd of gedeeld met anderen zodat ze kunnen worden gebruikt?

De meest standaardiseerde manier is om je themapakket in een ZIP-bestand te verpakken. Gebruikers kunnen dit ZIP-bestand direct uploaden en installeren in het WordPress-beheerpaneel, onder “Uiterlijk” -> “Themas” -> “Nieuw thema toevoegen” -> “Themas uploaden”. Als je het thema wilt publiceren in de officiële WordPress-themadirectory, moet je zich houden aan striktere codestandaarden en een reviewproces, waaronder onderwerpen als veiligheid, codekwaliteit en internationaal ondersteunen.