De volledige gids voor het ontwikkelen van WordPress-thema's: van nul tot een aangepast website-thema

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

Forbereidingen voordat je begint met ontwikkelen: omgeving en basiskennis

Voordat u met het schrijven van code begint, is het van belang een geschikte lokale ontwikkelomgeving op te zetten. Het wordt aanbevolen om tools te gebruiken als Local by Flywheel, MAMP of XAMPP, die het gemakkelijk maken om op uw computer een omgeving met PHP, MySQL en een webserver in te richten. Daarnaast zijn een efficiënte code-editor (zoals VS Code of PhpStorm) en de ontwikkelaarsmogelijkheden van de browser onmisbaar.

De kerntechnologieën die u moet beheersen zijn: HTML5 voor het opbouwen van de structuur en inhoud, CSS3 voor het stylen en indelen van de lay-out (met name Flexbox en Grid), en JavaScript (ES6+) voor interactie. Het belangrijkste is dat u basiskennis van PHP hebt, omdat...WordPress De kernlogica van het thema wordt door PHP aangestuurd. Dat begrijp ik.WordPress De fundamentele concepten, zoals “The Loop”, 'Hooks' (acties en filters) en de thematische hiërarchie, vormen de basis voor het succesvolle ontwikkelen.

Planning for the structure of the theme files

Een standaard...WordPress Het thema moet enkele basisbestanden bevatten. Het belangrijkste daarvan is de bestand met de stijlregels (stylesheet). style.cssHet is niet alleen een plek waar patronen worden gedefinieerd, maar de commentaarblokken in de bestandskoppen zijn ook zeer nuttig.WordPress Een “identiteitsbewijs” voor een thema bevat meta-informatie zoals de naam van het thema, de auteur en een beschrijving.

Aanbevolen leesmateriaal WordPress-themaontwikkeling van het begin tot de volmaaktheid: bouw moderne, responsieve websites

Een andere onmisbare bestand is… index.phpDit is het standaardtemplatebestand voor het thema.WordPress Bij de hiërarchie van templates zal het systeem eerst op zoek gaan naar de meest specifieke templatebestanden (bijvoorbeeld…) single.php Geeft gebruik voor één artikel.page.php (Gebruikt voor afzonderlijke pagina's); deze bestanden worden alleen gebruikt als ze niet beschikbaar zijn. index.phpEen goed geplande indeling van de bestanden zorgt ervoor dat de logische structuur van uw onderwerp duidelijker wordt.

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.

Construct a core theme file

Als je een thema begint te bouwen vanaf het meest fundamentele skelet, kun je beter begrijpen hoe het werkt. Begin eerst met het maken van een themapagina en de twee belangrijkste bestanden die hierboven worden genoemd.

Een stijlboek (stylesheet) en een indexbestand maken

wp-content/themes/ Maak in de map een map met de naam van uw onderwerp, bijvoorbeeld: my-first-themeIn deze map moet je een nieuw bestand maken. style.css De bestand moet aan het begin een commentaar hebben in de volgende formatie:

/*
Theme Name: My First Theme
Theme URI: https://example.com/my-first-theme/
Author: Your Name
Author URI: https://example.com
Description: 一个简洁、从零开始构建的自定义 WordPress 主题。
Version: 1.0.0
License: GPL v2 or later
Text Domain: my-first-theme
*/

Vervolgens maak je een index.php Deze file kan in de beginfase zeer simpel zijn; zijn belangrijkste taak is om de processen te starten.WordPress De inhoud van het artikel wordt afgeleverd door middel van een “cyclus”.

<!DOCTYPE html>
<html no numeric noise key 1013>
<head>
    <meta charset="<?php bloginfo( 'charset' ); ?>">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <?php wp_head(); ?>
</head>
<body no numeric noise key 1010>
    <header>
        <h1><a href="/nl/</?php echo esc_url( home_url( '/' ) ); ?>"><?php bloginfo( 'name' ); ?></a></h1>
        <p><p><strong>Deze website is bedoeld om u te informeren over de activiteiten van het bedrijf.</strong></p></p>
    </header>

<main>
        <?php
        if ( have_posts() ) :
            while ( have_posts() ) : the_post(); ?>
                <article>
                    <h2><p><strong>Hallo wereld!</strong></p></h2>
                    <div><?php the_content(); ?></div>
                </article>
            <?php endwhile;
        else :
            _e( '抱歉,没有找到对应的文章。', 'my-first-theme' );
        endif;
        ?>
    </main>

<footer>
        <p>©</p>
    </footer>
    <?php wp_footer(); ?>
</body>
</html>

Introductie van functionaliteitsbestanden

Een goed georganiseerd thema bevat meestal een aparte functionaliteitsbestand. functions.phpDeze bestand is geen template, maar een “plugin” die functies en eigenschappen toevoegt aan een thema. Het wordt automatisch geladen wanneer het thema wordt initialiseerd. U kunt dit bestand gebruiken om extra functionaliteiten aan uw thema te toevoegen.add_theme_supportFuncties om themafuncties te activeren, zoals artikelafbeeldingen, aangepaste logo's, ondersteuning voor HTML5-markeringen, etc.

Aanbevolen leesmateriaal Een volledige handleiding voor het ontwikkelen van WordPress-thema's: een praktische tutorial van nul tot online publicatie.

Zo kun je bijvoorbeeld in functions.php Voeg de volgende code toe om enkele basisfuncties te activeren:

<?php
function my_first_theme_setup() {
    // 让 WordPress 管理文档标题
    add_theme_support( 'title-tag' );
    // 启用文章和评论的 RSS feed 链接
    add_theme_support( 'automatic-feed-links' );
    // 启用文章缩略图功能
    add_theme_support( 'post-thumbnails' );
    // 注册一个导航菜单位置
    register_nav_menus( array(
        'primary' => __( '主导航菜单', 'my-first-theme' ),
    ) );
}
add_action( 'after_setup_theme', 'my_first_theme_setup' );
?>

Implementeren van templates en styles

Nu de basisstructuur er is, is de volgende stap om de templates en designelementen te splitsen, zodat het thema modulairer en mooier wordt.

Splitsen van de boven- en onderste template

Om de herbruikbaarheid van code te verbeteren, wordt dit meestal zo gedaan… index.php The header in the middle<head> De bovenste en onderste delen van de pagina (het koppen- en voetnootgebied, evenals de sluitende tags) moeten worden gescheiden in aparte templatebestanden. header.phpfooter.php

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%

header.php Bevat van <!DOCTYPE html> Alles de code dat zich bevindt voordat de hoofdinhoudszone begint. En daarna… index.php In, gebruiken get_header() Een functie die deze functie kan oproepen. Op vergelijkbare manier kan ook een nieuwe functie worden gecreëerd. footer.php En gebruik het ook. get_footer() Je kunt ook een oproep maken. Daarnaast kun je ook zelf iets creeren. sidebar.php En gebruiken ook… get_sidebar() Oproep.

Maak een lijst met artikelen en een template voor een enkele artikel.

Om een verschillende lay-out te creeren voor de homepagina van de blog en de inhoudspagina's van de artikelen, zijn speciale template-bestanden nodig. home.phpfront-page.php Normaal gesproken wordt dit gebruikt om de weergave van de blogartikelenlijstpagina te beheersen. single.php Dit wordt gebruikt om de weergave van een enkele artikel te controleren.

single.php Hier kunt u de weergave van een individueel artikel nog meer afstemmen, bijvoorbeeld door de categorie, tags, auteursgegevens en het commentaarveld te weergeven. U kunt hiervoor template-taggen gebruiken, zoals… the_category(), the_tags(), the_author_posts_link()comments_template() Om de inhoud van de pagina te verrijken…

Aanbevolen leesmateriaal Ultimatumgids voor het ontwikkelen van WordPress-plug-ins: van nul tot een professionele uitbreiding

Ontwerpen van een responsieve lay-out en stijl

style.css CSS wordt gebruikt om het uiterlijk van een website-thema te definiëren. Het moderne webdesign in 2026 moet gebaseerd zijn op het principe 'mobile first', waardoor de website goed werkt op alle apparaten, ongeacht hun grootte. Hierbij wordt gebruik gemaakt van mediaqueries om het ontwerp aan te passen aan schermen van verschillende afmetingen. Het is belangrijk dat de tekst duidelijk te lezen is, de kleuren goed op elkaar zijn afgestemd en dat er genoeg ruimte tussen elementen zit. Je kunt vanuit een reset-CSS- of normalize-CSS-bestand starten om een consistente weergave in alle browsers te garanderen.

Advanced features and customization

Nadat het basisonderwerp is afgerond, kan men verdergaan met...WordPress De krachtige API biedt extra functies, waardoor het product interactiever en meer te personaliseren is.

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.

Voeg een gebied voor widgets toe.

小工具(Widget)是WordPress Een flexibele container voor inhoud in de zijbalk of voetnoot. U kunt dit gebruiken om inhoud op een gemakkelijke manier te beheren en aan te passen. register_sidebar() De functie is beschikbaar. functions.php Registreer één of meerdere widgets in de beheeromgeving.

function my_first_theme_widgets_init() {
    register_sidebar( array(
        'name'          =&gt; __( '侧边栏小工具区域', 'my-first-theme' ),
        'id'            =&gt; 'sidebar-1',
        'description'   =&gt; __( '在此添加小工具以显示在侧边栏。', 'my-first-theme' ),
        'before_widget' =&gt; '<section id="%1$s" class="widget %2$s">',
        'after_widget'  =&gt; '</section>',
        'before_title'  =&gt; '<h3 class="widget-title">',
        'after_title'   =&gt; '</h3>'function my_first_theme_widgets_init() {  
    register_sidebars( array(  
        'name' =&gt; 'My First Theme Sidebar',  
        'id' =&gt; 'my-first-theme-sidebar',  
        'description' =&gt; 'De eerste sidebar van mijn thema',  
    ) );  
    add_action( 'widgets_init', 'my_first_theme_widgets_init' );  
};

Nadat u zich hebt geregistreerd, kunt u in het backend, onder “Uiterlijk” -> “Widgetten”, widgets toevoegen aan deze regio. Dit kunt u doen in de templatebestanden (bijvoorbeeld)... sidebar.php) wordt gebruikt in dynamic_sidebar( 'sidebar-1' ) Toon het maar.

Integreer een customizer voor realtime-previews

WordPress De Customizer biedt gebruikers de mogelijkheid om themasettingen in real time te bekijken en te bewerken.WP_Customize_Manager U kunt objecten voorzien van instellingen en controlelementen. Als voorbeeld: voeg een optie toe waarmee u de kleur van de website-titel kunt wijzigen.

function my_first_theme_customize_register( $wp_customize ) {
    // 添加一个设置项(存储到数据库的值)
    $wp_customize->add_setting( 'header_color', array(
        'default'           => '#333333',
        'transport'         => 'postMessage',
        'sanitize_callback' => 'sanitize_hex_color',
    ) );
    // 添加一个颜色选择控件
    $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'header_color', array(
        'label'    => __( '页头标题颜色', 'my-first-theme' ),
        'section'  => 'colors',
        'settings' => 'header_color',
    ) ) );
}
add_action( 'customize_register', 'my_first_theme_customize_register' );

En vervolgens, header.php Of gebruik het in de inline-stijl. get_theme_mod( 'header_color' ) Geef de kleurwaarde op.transport De parameter is ingesteld op postMessage In sommige gevallen is het ook nodig om enkele regels JavaScript te schrijven om een realtime-preview mogelijk te maken zonder dat de pagina hoeft te worden bijgewerkt. Dit verbetert de gebruikerservaring aanzienlijk.

De beste praktijken voor het invoeren van scripts en styles

Het is belangrijk om JavaScript- en CSS-bestanden op de juiste manier te toevoegen aan de queue. Hier zijn enkele tips:WordPress De beste praktijken voor ontwikkeling. Dit zorgt ervoor dat de afhankelijkheden correct zijn en dat resourceconflicten worden vermeden.wp_enqueue_script()wp_enqueue_style() Functies, en deze worden vervolgens geïntegreerd in wp_enqueue_scripts Aan de haak.

function my_first_theme_scripts() {
    // 引入主样式表
    wp_enqueue_style( 'my-first-theme-style', get_stylesheet_uri() );
    // 引入自定义 JavaScript 文件
    wp_enqueue_script( 'my-first-theme-navigation', get_template_directory_uri() . '/js/navigation.js', array(), '1.0.0', true );
    // 为评论回复功能添加脚本(仅在需要时加载)
    if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
        wp_enqueue_script( 'comment-reply' );
    }
}
add_action( 'wp_enqueue_scripts', 'my_first_theme_scripts' );

Samenvatting

Vanaf nul ontwikkelen een…WordPress Het thema is een diepere verkenning.WordPress De kernmechanismen en uitstekende praktijken van moderne webontwikkelingstechnologieën. Het hele proces omvat het opzetten van een omgeving, het maken van basisbestanden, het toepassen van een template-hiërarchie, tot het gebruik ervan.functions.php Voeg functies toe, ontwerp een responsieve interface, en integreer zelfs geavanceerde functies zoals widgets en customizers. Houd je aan de codestandaarden, stel je op mobiele gebruikers voor en maak gebruik van...WordPress Dankzij de uitgebreide API's en het hook-systeem kunt u unieke, functionele en gemakkelijk te onderhouden custom-themes bouwen. Dit vormt een solide basis voor het verder ontwikkelen van sub-themes, het aanpassen van artikeltypen of het integreren van REST-API's.

Veelgestelde vragen (FAQ)

Welk niveau PHP-kennis moet men hebben om met het ontwikkelthema ### te kunnen werken?
Je moet de basisgrammatiek van PHP beheersen, waaronder variabelen, arrays, conditionele bewerkingen, cycli en functies. Het is nog belangrijker om te leren hoe je code leest en gebruikt.WordPress Er worden duizenden ingebouwde functies (sjabloontags) en klassenmethoden geleverd. Je hoeft geen complexe systemen vanaf nul op te bouwen; het gaat om het begrijpen van hoe je dit moet doen.WordPress PHP-code wordt georganiseerd en gebruikt binnen het framework.

Hoe moet men de functionaliteiten van thema's en plugins indelen?

Een goede regel van hand is: functies die het uiterlijk en de lay-out van een website beïnvloeden, moeten worden opgenomen in het thema; functies die de werking van de website of de gegevens beïnvloeden, moeten worden gemaakt als plugins. Bijvoorbeeld zijn het aanpassen van artikeltypen, het gebruik van shortcodes en complexe dataverwerkingstechnieken beter te realiseren als plugins. Op deze manier blijven de kernfuncties behouden wanneer de gebruiker het thema vervangt, waardoor de duurzaamheid van de website wordt gewaarborgd.

Waarom wordt het aanbevolen om subthema's te gebruiken voor aanpassingen?

Als je de bestand van een derde-partij-thema rechtstreeks wijzigt, worden deze wijzigingen overschreven wanneer het thema wordt bijgewerkt, waardoor al je aangepaste elementen verloren gaan. Het maken van een subthema is een standaardoplossing voor dit probleem. Een subthema bevat alleen de stijl- en templatebestanden die jij zelf hebt aangepast, en erft alle functies van het moedertema. Wanneer het moedertema wordt bijgewerkt, blijven je aangepaste elementen veilig behouden.WordPress Een van de belangrijkste en beste praktijken in de ontwikkeling:

Hoe kan ik zorgen dat het thema dat ik ontwikkel voldoet aan de codingstandaarden van WordPress?

WordPress Er zijn gedetailleerde coderingsstandaarden voor PHP, HTML, CSS en JavaScript vastgesteld. Deze staan beschreven in de officiële handboeken. Door gebruik te maken van statische code-analysetools zoals “PHP_CodeSniffer” in combinatie met het regelset “WordPress-Coding-Standards”, kunnen onregelmatigheden in het codegedrag automatisch worden gecontroleerd en verholpen tijdens het schrijven van code. Dit is van belang voor teamwerk en de kwaliteit van het code.

Hoe stuur je een klaar ontwikkeld thema op naar het officiële themakatalog?

Inleveren bijWordPress.org Het officiële themakatalogus ondergaat een strenge review. Uw thema moet voldoen aan de vereisten van de GPLv2-licentie (of een latere versie), moet van hoge kwaliteit zijn, alle coderingstandaarden naleven, veilig zijn en geen beveiligingslekken bevatten. Bovendien mag er geen compressie of obfuscatie van JavaScript worden gebruikt in de front-end. Voordat u uw thema indient, moet u dit eerst met het “Theme Check”-plugin controleren. Daarna kunt u het thema via het officiële indielsysteem uploaden en wachten op de manuele beoordeling van het reviewteam.