Handboek voor het ontwikkelen van WordPress-themes: van nul een geavanceerde gebruikersomgeving bouwen

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

Forbereidende werkzaamheden en opzet van de omgeving

Voordat je met het schrijven van code begint, is een stabiele en efficiënte ontwikkelomgeving de basis voor succes. Dit omvat het instellen van een lokale ontwikkelomgeving, het beschikken over de benodigde hulpmiddelen en software, en het begrijpen van de basisstructuur van een WordPress-thema.

Eerst moet je een lokale serveromgeving opzetten. Je kunt hiervoor gebruikmaken van integratie-hulpmiddelen als XAMPP, MAMP, Local by Flywheel of DevKinsta; deze maken het mogelijk om Apache, MySQL en PHP snel op je lokale computer te installeren. Voor moderne ontwikkeling raden we aan om een omgeving te gebruiken die PHP 7.4 of een latere versie ondersteunt, om de compatibiliteit met de meest recente functies van WordPress te garanderen.

Als volgende stap kun je een code-editor gebruiken. Visual Studio Code, PhpStorm of Sublime Text zijn allemaal uitstekende keuzen. Visual Studio Code wordt door veel ontwikkelaars favoriet vanwege de grote verscheidenheid aan extensies (zoals PHP Intelephense en WordPress Snippet) en de krachtige mogelijkheden voor het opsporen en oplossen van fouten (debugging). Daarnaast is een versiebeheerssysteem als Git onmisbaar; dit helpt je bij het beheersen van codeveranderingen en het samenwerken met je team.

Aanbevolen leesmateriaal Diepgravend onderzoek naar het ontwikkelen van WordPress-themes: een volledig handboek van het begin tot de volmaaktheid

Het is van belang om de inhoudsstructuur van het thema te begrijpen. Een basis-WooCommerce-thema vereist ten minste twee bestanden:style.cssindex.phpstyle.cssHet is niet alleen een stylesheet, maar ook een soort “identiteitsbewijs” van het thema. De commentaren in het hoofddeel bevatten meta-informatie over het thema, zoals de naam van het thema, de auteur en een beschrijving.index.phpDit is de hoofdtemplatefile. Naarmate de ontwikkeling vordert, zal je ook andere templatefiles gaan maken.header.phpfooter.phpfunctions.phpEn andere bestanden, waardoor een duidelijke, modulaire structuur wordt gecreëerd.

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 and structure

WordPress-themes werken volgens een systeem van template-lagen. Dit betekent dat het systeem automatisch het juiste template-bestand kiest om te renderen, afhankelijk van het type pagina die wordt bekeken (bijvoorbeeld de homepagina, een artikelpagina of een specifieke pagina). Het begrijpen en beheersen van deze kerntemplate-bestanden is essentieel voor het bouwen van een WordPress-theme.

Het begrijpen van de structuur (of laagering) van een template

Het niveau van de templates bepaalt de volgorde van de zoekregels: van algemeen naar specifiek. Als je bijvoorbeeld een blogartikel bezoekt, zal WordPress op de volgende manier kijken waar het artikel te vinden is:single-post.phpsingle.phpEn ten slotte:index.phpOp de homepagina wordt eerst een zoektocht uitgevoerd.front-page.phphome.phpHet begrijpen van deze hiërarchische relatie helpt je om de standaardopstelling op de juiste plek te overschrijven, waardoor je een precieze controle over de pagina kunt uitvoeren.

Een basistemplatebestand maken

Laten we beginnen met het maken van enkele van de meest fundamentele bestanden. Eerst…header.phpHet bevat een documentkop, een navigatiemenu en het identiteitsmerk (logo) van de website.

<!DOCTYPE html>
<html no numeric noise key 1007>
<head>
    <meta charset="<?php bloginfo( 'charset' ); ?>">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <?php wp_head(); ?>
</head>
<body no numeric noise key 1004>
    <header class="site-header">
        <div class="site-branding">
            <?php the_custom_logo(); ?>
            <h1 class="site-title"><a href="/nl/</?php echo esc_url( home_url( '/' ) ); ?>"><?php bloginfo( 'name' ); ?></a></h1>
        </div>
        <nav class="main-navigation">
            'menu-1',
                'menu_id'        =&gt; 'primary-menu',
            ) );
            ?&gt;
        </nav>
    </header>

Als tweede…footer.phpHet bevat voetnoten-informatie en belangrijke WordPress-hooks.

Aanbevolen leesmateriaal De ultimate gids voor het bouwen van professionele websites: Ontwikkeling van WordPress-themes van het begin tot de volmaaktheid

    <footer class="site-footer">
        <p>©  . All rights reserved.</p>
    </footer>
    <?php wp_footer(); ?>
</body>
</html>

Ten slotte,index.phpHier gebruiken we…get_header()get_footer()Een functie wordt gebruikt om deze onderdelen te introduceren.

<?php get_header(); ?>

<main id="primary" class="site-main">
    &lt;?php
    if ( have_posts() ) :
        while ( have_posts() ) :
            the_post();
            // 文章内容输出
            the_title( &#039;<h2>', '</h2>' );
            the_content();
        endwhile;
    else :
        echo '<p>No content found.</p>';
    endif;
    ?&gt;
</main>

Integratie van themafuncties en styling

Een sterke thema vereist niet alleen een goede uitstraling, maar ook functionele eigenschappen.functions.phpDe bestanden vormen je “tassen met tools”, waarmee je functies kunt toevoegen, menu’s kunt registreren en speciale afbeeldingen kunt ondersteunen. Daarnaast is het gebruiken van stijlbestanden (style sheets) voor een responsief ontwerp een standaard feature in moderne thema’s.

Deze file bevat verbeteringen voor de themafuncties.

functions.phpHier kun je een reeks initialisatie-instellingen uitvoeren. Eerst moet je de positie van de navigatie-menubalk registreren.

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%
function my_theme_setup() {
    register_nav_menus( array(
        'menu-1' => esc_html__( 'Primary Menu', 'my-theme' ),
        'footer' => esc_html__( 'Footer Menu', 'my-theme' ),
    ) );
    add_theme_support( 'post-thumbnails' );
    add_theme_support( 'title-tag' );
    add_theme_support( 'custom-logo' );
}
add_action( 'after_setup_theme', 'my_theme_setup' );

Deze code registreert twee plaatsen voor gerechten en schakelt de functies voor artikelafbeeldingen in, automatische titeltaggen en een aangepast logo in. Je kunt hier ook zelf nog andere instellingen maken.add_theme_support()Er zijn functies beschikbaar om meer mogelijkheden te activeren, zoals ondersteuning voor HTML5 en het instellen van een aangepaste achtergrond.

Een hoofdstaalboek schrijven

style.cssDe hoofdcommentaren bevatten de metadata van het thema, waardoor WordPress in de achtergrond je thema kan herkennen.

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

Na de metadata kun je beginnen met schrijven van CSS. Moderne ontwikkelingspraktijken bevorderen een mobiele first en responsief ontwerp.

Aanbevolen leesmateriaal WordPress-themaontwikkeling: van nul tot een professionele, responsieve website

/* 基础样式与移动端 */
body {
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, sans-serif;
    line-height: 1.6;
    margin: 0;
}

.site-header {
    display: flex;
    justify-content: space-between;
    padding: 1rem;
    background-color: #f8f9fa;
}

.main-navigation ul {
    list-style: none;
    padding: 0;
    display: flex;
    gap: 1rem;
}

/* 平板电脑及以上设备 */
@media (min-width: 768px) {
    .site-main {
        max-width: 1200px;
        margin: 0 auto;
        padding: 2rem;
    }
}

Voor optimale prestaties wordt het aanbevolen CSS en JavaScript apart te bewaren.wp_enqueue_style()wp_enqueue_script()De functies worden in een wachtrij geladen, waardoor afhankelijkheden correct worden verwerkt en conflicten worden voorkomen.

Maatgeschikte en geavanceerde functies

Om je thema op te vallen en praktisch te maken, is het belangrijk om enkele geavanceerde functies te integreren. Dit omvat het creeren van een gadgetgebied, het mogelijk maken om artikeltypes aan te passen, het ondersteunen van thema-customizaties en de compatibiliteit met subthema's.

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.

Maak een gebied voor widgets.

De kleine tooltjes maken het voor gebruikers gemakkelijk om onder de knie te houden welke componenten ze in de sidebar of voetnoot kunnen plaatsen. Je kunt ze dus gebruiken om de lay-out van je website eenvoudig aan te passen.register_sidebar()Een functie om het widgetgebied te registreren.

function my_theme_widgets_init() {
    register_sidebar( array(
        'name'          =&gt; esc_html__( 'Sidebar', 'my-theme' ),
        'id'            =&gt; 'sidebar-1',
        'description'   =&gt; esc_html__( 'Add widgets here.', 'my-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' );  
};

In het template kun je gebruikmaken van…dynamic_sidebar( 'sidebar-1' )Om deze regio op te roepen…

Integrated theme customizer

De thema-editor biedt gebruikers een interface waarin ze hun instellingen in real time kunnen bekijken. Je kunt dit dus gebruiken om de instellingen te bepalen.WP_Customize_ManagerObjecten worden gebruikt om instellingen en controle-elementen toe te voegen.

function my_theme_customize_register( $wp_customize ) {
    // 添加一个“主题颜色”设置
    $wp_customize->add_setting( 'primary_color', array(
        'default'           => '#0073aa',
        'sanitize_callback' => 'sanitize_hex_color',
    ) );

$wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'primary_color', array(
        'label'    => __( 'Primary Color', 'my-theme' ),
        'section'  => 'colors',
    ) ) );
}
add_action( 'customize_register', 'my_theme_customize_register' );

En vervolgens,style.cssOf gebruik het in de inline-stijl.get_theme_mod( 'primary_color' )Om deze kleurwaarde te kunnen toepassen…

Zorg ervoor dat de subthema's compatibel zijn.

Een goede thema moet klaar zijn voor toekomstige uitbreidingen (subthema's). Dat betekent dat je moet voorkomen dat er in de templatebestanden harde, absolute paden worden gebruikt, maar in plaats daarvan…get_template_directory_uri()Functies. Tevens moet alle vertaalbare tekst worden gebruikt.__()_e()De functie wordt verpakt en gebruikt vervolgens…load_theme_textdomain()Taalbestand wordt geladen.

Samenvatting

Het ontwikkelen van een WordPress-thema vanaf nul is een systeematische procedure die begint met de voorbereiding van de omgeving en het planeren van de structuur, vervolgt met het verder gaan naar de kerntemplates en het bouwen van de betreffende bestanden, en eindigt met...functions.phpThema's worden functionaliteit en uiterlijk gegeven door het gebruik van CSS- en JavaScript-bestanden. De bruikbaarheid en professionaliteit van een thema kunnen verder worden verbeterd met behulp van extra functies zoals plugins en customizers. Het is belangrijk om tijdens het hele proces de WordPress-编码standaarden te volgen, aandacht te besteden aan prestatieoptimalisatie en uitbreidbaarheid. Door de stappen in deze gids te volgen, creëer je niet alleen een bruikbaar thema, maar begrijp je ook de principes erachter, waardoor je een solide basis kunt leggen voor het ontwikkelen van complexere, meer aangepaste en geavanceerde interfaces.

Veelgestelde vragen (FAQ)

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

Ja, een solide basis in PHP is vereist. Het kernprogramma van WordPress en het themasysteem zijn namelijk opgebouwd in PHP. Je moet de PHP-syntax, functies, cycli en conditionele statements begrijpen om effectief met gegevens te kunnen werken, template-taggen te creeren en de logica van thema's te bepalen. Maak je geen zorgen: je hoeft geen PHP-expert te worden om ermee te kunnen starten. Het is een goede manier om te leren door bestaande thema's te bewerken of de basiscode van deze handleiding te gebruiken.

Welke informatie is vereist in het style.css-bestand?

style.cssIn de commentaarblok bovenin het bestand:Theme NameDit is de enige vereiste informatie; zonder dit kan WordPress je thema niet herkennen in de achtergrond. Om het thema compleet en professioneel te maken, wordt het echter aanbevolen om ook alle overige velden in te vullen.AuthorDescriptionVersionText Domain(Verwijst naar internationale ondersteuning en dergelijke informatie.)

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

Je moet de internationaleisering (i18n)-functies van WordPress gebruiken. Eerst moet je...functions.phpGebruikt in het Chinees (vereenvoudigd)load_theme_textdomain()De functie laadt de taalbestand in. Vervolgens worden in alle PHP-templaatbestanden van het thema alle tekststringen die moeten worden vertaald vervangen door de corresponderende vertalingen.__()Of_e()De functie moet worden omhuld (gepackt). Ten slotte wordt er met een tool als Poedit een uitvoerbaar bestand (executable file) gemaakt..potDe templatebestanden worden gemaakt door de vertalers..po.moHet document.

Waarom wordt mijn zelfgemaakte menu niet weergegeven?

Er zijn meestal een paar redenen voor dit. Allereerst: zorg ervoor dat je het al hebt gedaan.functions.phpDoor middel vanregister_nav_menus()De functie heeft de menupositie correct geregistreerd. Daarna moet je inloggen in het WordPress-administratiepaneel, naar “Uiterlijk > Menus” gaan, een nieuw menu maken, dit toewijzen aan de door jou in de code geregistreerde menupositie (bijvoorbeeld “Primary Menu”) en het menu opslaan. Ten slotte moet je de templatebestanden controleren.header.phpDe functie voor het oproepen van het menu wordt gebruikt in…)wp_nav_menu()Of de parameters correct zijn, vooral...theme_locationIs deze sleutelnaam overeenkomstig met de sleutelnaam die is ingevoerd tijdens het registreren?

Hoe introduceer je JavaScript- en CSS-bestanden op de juiste manier bij het ontwikkelen van een thema?

De beste praktijk is om de door WordPress beschikbare `enqueue`-functie te gebruiken, in plaats van deze rechtstreeks in de templatebestanden aan te roepen.<link><script>Taggen. Infunctions.phpIn, gebruikenwp_enqueue_style()CSS invoeren en gebruikenwp_enqueue_script()JavaScript invoeren heeft als voordelen dat je afhankelijkheden kunt beheersen, dubbele laden kunt voorkomen en zorgt ervoor dat dingen op de juiste momenten (oftewel in de juiste ‘hooks’) worden uitgevoerd.wp_enqueue_scriptsHet wordt uitgevoerd op de server en werkt harmonieus samen met de kern van het systeem en andere plugins.