Van nul tot één: Een volledig handboek en praktische training voor het ontwikkelen van WordPress-themes

3 minuten leestijd
2026-03-17
2026-06-03
2,811
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

Om met het ontwikkelen van WordPress-themes te beginnen, is het eerst belangrijk om de kernconcepten te begrijpen. Een WordPress-theme bestaat in feite uit een groep bestanden, waaronder styleheets, templatebestanden, afbeeldingen en JavaScript-bestanden. Deze bestanden bepalen samen het uiterlijk en de functionaliteiten van een website. Het ontwikkelen van een theme houdt in dat je een compleet set regels maakt, waarmee je WordPress vertelt hoe de inhoud uit de database moet worden weergegeven aan bezoekers.

De voorbereiding van het omgeving voor het ontwikkelen is van cruciaal belang. Je hebt een lokale ontwikkelomgeving nodig, die eenvoudig kan worden opgezet met tools als XAMPP, MAMP, Local by Flywheel of Docker. De lokale omgeving biedt je de mogelijkheid om te ontwikkelen, te testen en te debuggen zonder de online website te beïnvloeden. Daarnaast is een efficiënte code-editor onmisbaar, bijvoorbeeld Visual Studio Code,PhpStorm of Sublime Text. Deze editors bieden ondersteuning voor syntaxis-highlighting, codevoorstellen en debugging-functies, waardoor je ontwikkelingsproces veel efficiënter wordt.

Volgens de instructies moet je nu de inhoudsstructuur van het thema begrijpen. Elk thema bevindt zich op een specifieke plek./wp-content/themes/De inhoud bevindt zich in een map, en deze map bestaat uit een aparte folder. Voor het basisthema zijn maar twee bestanden nodig:style.cssindex.phpInstyle.cssIn de hoofdcommentaren moet je de meta-informatie over het onderwerp bieden.

Aanbevolen leesmateriaal In dieper analyses van WordPress-custom fields: van het begin tot geavanceerde toepassingen in de praktijk

/*
Theme Name: 我的第一个主题
Theme URI: https://example.com/my-first-theme
Author: 你的名字
Author URI: https://example.com
Description: 这是一个用于学习WordPress主题开发的简单主题。
Version: 1.0
License: GNU General Public License v2 or later
Text Domain: my-first-theme
*/

Dezestyle.cssDe bestanden zijn niet alleen sjablonen, maar ook een soort “identiteitsbewijs” van het thema. WordPress herkent en weergeeft je thema in de achtergrond door deze commentaren te lezen.

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

WordPress gebruikt een intelligente systeem genaamd “template hierarchy” om te bepalen welke templatebestand gebruikt moet worden om de inhoud te weergeven voor een bepaald paginaverzoek. Het begrijpen van deze hiërarchie is essentieel voor het ontwikkelen van thema's.

Het meest essentiële template-bestand is…index.phpHet dient als alternatieve template voor alle pagina's. Als WordPress geen specifiekere template kan vinden, wordt dit template gebruikt. De homepagina wordt meestal gemaakt met dit template.front-page.phphome.phpControle: De voorkeur gaat uit naar een enkele pagina per artikel.single.phpEn voor bepaalde soorten artikelen, bijvoorbeeld “producten”, zal WordPress op zoek gaan naar...single-product.phpDe pagina wordt gebruikt voor…page.phpAls de pagina een aangepaste template bevat, wordt deze gebruikt.page-{slug}.phppage-{id}.phpDe archiveringspagina's van artikelen (zoals per categorie, tag, auteur of datum) corresponderen hiermee.archive.phpEn de meer specifieke varianten daarvan, zoalscategory.phptag.phpetc.

Template voor de boven- en onderste delen van het thema (theme header and footer)

Om het DRY-principe (Don't Repeat Yourself) te naleven, gebruiken WordPress-themes…get_header()get_footer()get_sidebar()Gebruik functies zoals `include` om gedeelde code uit te voeren. Dit betekent dat je een nieuwe functie moet maken die deze gedeelde code bevat.header.phpfooter.phpHet document.

header.phpEen bestand bevat meestal een HTML-head, meta-taggen, links naar stijlbestanden en scripts, evenals de bovenste navigatiezone van de website. Het is van cruciaal belang dat het bestand deze elementen bevat.wp_head()Function call: deze functie biedt de mogelijkheid voor het WordPress-core, plugins en thema's zelf om…<head>Een deel van de benodigde code wordt ingevoerd.

Aanbevolen leesmateriaal Een introductie tot het ontwikkelen van WordPress-thema's: hoe je je eigen website vanaf nul opbouwt.

footer.phpDe bestanden bevatten informatie aan de onderkant van de website, referenties naar scripts, etc.wp_footer()De functie is afgerond.wp_head()De functie is vergelijkbaar met die van andere tools; het wordt gebruikt om code onderaan de pagina in te voegen.

In het templatebestand kun je ze op deze manier invoeren:

<?php get_header(); ?>

<!-- 主内容区 -->

<?php get_footer(); ?>

Themafuncties en WordPress-cycli

De functionaliteit van een thema beperkt zich niet alleen tot het uiterlijk.functions.phpJe kunt functies toevoegen, eigenschappen registreren en plugins integreren in je thema. Dit bestand wordt automatisch geladen wanneer je thema wordt activeerd, en fungeert als een soort persoonlijke plugin voor je thema.

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%

Het begrijpen van de loops in WordPress

De WordPress-loop vormt de kernlogica van themaontwikkeling. Het is een stuk PHP-code dat controleert of er artikelen (of berichten) op de huidige pagina zijn die moeten worden weergegeven. Als dat het geval is, wordt elke artikel doorlopen en uitgegeven. De basisstructuur van de loop is als volgt:

<!-- 在这里输出文章内容 -->
        <h2><p><strong>Hallo wereld!</strong></p></h2>
        <div><?php the_content(); ?></div>
    endwhile; ?
    <p>Er is geen enkele artikel gevonden.</p>
<?php endif; ?>

Tijdens een loop kunt u een reeks template-taggen gebruiken om artikelinformatie af te drukken.the_title()Outputtitel,the_content()Het complete verhaal:the_excerpt()Een samenvatting van de uitvoer,the_permalink()De link naar het artikel halen.the_post_thumbnail()Vertoon unieke afbeeldingen.

Registratie-menu en sidebar

Moderne thema's bieden gebruikers meestal de mogelijkheid om het menu en de toevoegingen (plugins) via de backend aan te passen. Hiervoor is…functions.phpRegistreer je hier.

Aanbevolen leesmateriaal Handboek voor het ontwikkelen van WordPress-themes: van nul beginnen met het maken van je eerste custom theme

Gebruikregister_nav_menus()Een functie kan één of meerdere menuposities registreren:

function mytheme_register_menus() {
    register_nav_menus(
        array(
            'primary-menu' => __( '主导航菜单', 'my-first-theme' ),
            'footer-menu'  => __( '页脚菜单', 'my-first-theme' ),
        )
    );
}
add_action( 'init', 'mytheme_register_menus' );

Vervolgens, in het templatebestand (bijvoorbeeld...)header.php) wordt gebruikt inwp_nav_menu()Om het menu te weergeven…

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.

Evenzo wordt de sidebar (het gebied voor widgets) gebruikt om...register_sidebar()Function registratie:

function mytheme_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; '<h2 class="widget-title">',
            'after_title'   =&gt; '</h2>',
        )
    );
}
add_action( 'widgets_init', 'mytheme_widgets_init' );

In de template wordt gebruik gemaakt vandynamic_sidebar( 'sidebar-1' )Om deze regio op te roepen…

Integratie van stijl-, script- en themaontwerpers

Om het thema professioneler en gebruikersvriendelijker te maken, is het belangrijk om de loading van stijlen en scripts op de juiste manier te regelen, en waar mogelijk de functies van de meegeleverde WordPress-customizers te integreren.

Stijlen en scripts worden in een rij (queue) geladen.

De juiste manier om dit te doen, is om...wp_enqueue_style()wp_enqueue_script()Functies… voeg ze toe.functions.phpDe afhankelijkheden worden opgeslagen in de ‘hooks’. Dit zorgt ervoor dat de afhankelijkheden correct worden beheerd en dat dubbele laden wordt voorkomen.

function mytheme_enqueue_assets() {
    // 主题主样式表
    wp_enqueue_style( 'mytheme-style', get_stylesheet_uri() );

// 谷歌字体
    wp_enqueue_style( 'mytheme-google-fonts', 'https://fonts.googleapis.com/css2?family=Roboto&display=swap', array(), null );

// 主JavaScript文件
    wp_enqueue_script( 'mytheme-script', get_template_directory_uri() . '/js/main.js', array( 'jquery' ), '1.0', true );
}
add_action( 'wp_enqueue_scripts', 'mytheme_enqueue_assets' );

Integrated theme customizer

De WordPress-wijzegger (Customizer) biedt gebruikers de mogelijkheid om themasettingen aan te passen in een realtime-preview.$wp_customizeJe kunt objecten voorzien van instellingen en controlelementen.

Als voorbeeld: een optie om de kleur van de titel van een website te kunnen instellen:

function mytheme_customize_register( $wp_customize ) {
    // 添加一个设置(存储在数据库中)
    $wp_customize->add_setting( 'header_color', array(
        'default'           => '#333333',
        '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', 'mytheme_customize_register' );

En vervolgens, in jouw…style.cssOf gebruik deze waarde in de dynamisch genereerde stijl:

function mytheme_customizer_css() {
    ?>
    <style type="text/css">
        .site-header {
            background-color: <?php echo esc_attr( get_theme_mod( 'header_color', '#333333' ) ); ?>;
        }
    </style>
    <?php
}
add_action( 'wp_head', 'mytheme_customizer_css' );

Samenvatting

Het ontwikkelen van WordPress-themes is een interessante techniek waarin design en programmering worden gecombineerd. Het begint met het bestuderen van de kernbestanden (zoals…)style.cssindex.phpJe begrijpt de principes van (…) en gaat verder met het bestuderen van de structuur van templates, WordPress-cycli en…functions.phpDeze krachtige functies van WordPress maken het mogelijk om strak georganiseerde en presterende thema’s te bouwen. Door de templatebestanden op de juiste manier te structureren, template标签 te gebruiken, menu’s en plugingebieden te registreren, en resources op een gestructureerde manier te laden, kun je een thema creëren dat optimaal werkt. Bovendien biedt de integratie van een thema-customizer de eindgebruiker een intuïtieve mogelijkheid om het thema aan te passen. Nadat je deze basiskennis hebt vergaard, kun je je eigen ontwerp omtoveren in een volledig functionerend WordPress-thema en leg je daarmee een solide basis voor het leren van meer geavanceerde thema-frames (zoals Undertakes of Genesis) en Block-thema’s.

Veelgestelde vragen (FAQ)

Is het nodig om vloeiend PHP te beheersen om een WordPress-thema te ontwikkelen?

Hoewel het niet nodig is om expertniveau te bereiken, is een solide basis in PHP essentieel. Je moet de PHP-syntax, variabelen, functies, cycli en conditionele statements begrijpen, aangezien de kern van WordPress en de thematemplates in PHP zijn geschreven. Het is ook belangrijk om voldoende kennis te hebben van HTML, CSS en basis-JavaScript.

Hoe zorg ik ervoor dat mijn thema voldoet aan de officiële standaarden van WordPress?

Om je thema te voldoen aan de vereisten en mogelijk opgenomen te worden in de officiële WordPress-themacatalogus, moet je de 'WordPress Theme Development Guide' en de 'Theme Review Guidelines' volgen. Dit betekent dat je veilige coderingstechnieken gebruikt, je thema internationaal klaarmaakt (met het gebruik van tekstvelden en vertaalfuncties), een responsief ontwerp realiseert, belangrijke functies niet hardcodes in je thema (het wordt aanbevolen om subthema's of plugins te gebruiken), en je thema test met het officieel beschikbare Theme Check-plugin.

Waarom zie ik de veranderingen in mijn thema niet na het opnieuw laden (refreshen) van de pagina?

Dit probleem wordt meestal veroorzaakt door de browsercache of de cache-mechanisme van WordPress. Probeer eerst om tegelijkertijd de toetsen in te drukken…Ctrl + F5(Win/Linux) ofCmd + Shift + ROp een Mac kunt je de browsercache opschonen door een harde refresh te uitvoeren. Als het probleem nog steeds bestaat, moet je controleren of je in een lokale ontwikkelomgeving werkt en of er cache-extensies zijn geïnstalleerd. Probeer deze tijdelijk uit te schakelen. Verder moet je controleren of je de juiste template-bestanden hebt gewijzigd en of deze zijn gespeeld.

Wat is het verschil tussen een subthema en een hoofdthema? Wanneer moet je er een gebruikmaken?

Een parent-topic (moedertopic) is een volledig functionerend, onafhankelijk topic. Een sub-topic (onderthema) is afhankelijk van het parent-topic en bevat slechts enkele bestanden (er moet ten minste één bestand aanwezig zijn).style.cssSubthema's worden gebruikt om de stijl en functionaliteiten van een oudere (ouder) thema te overschrijven of uit te breiden. Als je een bestaand thema wilt aanpassen, maar deze aanpassingen niet wilt verliezen wanneer het oudere thema wordt bijgewerkt, moet je een subthema maken. Dit is de beste praktijk voor het upgraden en aanpassen van thema's.

Hoe voeg ik volledige ondersteuning voor het Gutenberg-editor-pakket toe aan mijn thema?

Om de ondersteuning voor de Gutenberg-editor te verbeteren, moet je…functions.phpGebruikt in het Chinees (vereenvoudigd)add_theme_support()Een function declaratie bevat een reeks eigenschappen (of kenmerkende eigenschappen). Bijvoorbeeld, het toevoegen van...align-widealign-fullEr wordt ondersteuning geboden voor het aanpassen van kleurpaletten, gradienten als achtergrond en het instellen van de fontgrootte. Daarnaast worden aparte style sheets gecreëerd voor de artikelen- en pagina-editor.add_editor_style()Voeg dit toe. Voor meer uitgebreide personalisaties moet je mogelijk leren hoe je eigen blokken (custom blocks) maakt.