Een perfect WordPress-thema maken: een volledig ontwikkelingsgids van nul tot expertniveau

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

In de huidige internetwereld kan een goede website niet zonder een krachtige contentmanagementplatform en een mooi, gebruiksvriendelijk front-end-ontwerp. Als ontwikkelaar is het heel bevredigend om zulke elementen zelf te creëren.WordPressHet thema is niet alleen een goede manier om het uiterlijk en de functionaliteiten van een website diep te personaliseren, maar ook een uitstekende manier om de kernontwikkelingsvaardigheden te beheersen. In dit artikel wordt je stap voor stap geleid om vanaf nul de basiskenningen van themaontwikkeling te begrijpen en te beheersen.WordPressHet volledige proces van themaontwikkeling omvat alle aspecten, van de basisinfrastructuur tot de geavanceerde functies.

Een ontwikkelingsomgeving opzetten en de basisstructuur begrijpen

Voordat je met het schrijven van code begint, is een efficiënte lokale ontwikkelingsomgeving van belang. Het wordt aanbevolen om tools als Local by Flywheel, XAMPP of MAMP te gebruiken om snel een omgeving op te zetten die alle benodigde onderdelen bevat.PHPMySQLApache/NginxDe lokale server. Installeer ook een handige code-editor, zoals VS Code of PHPStorm, en maak je ervan bewust hoe deze te gebruiken is.WordPressDe installatieprocedure.

Thema-indeling en analyse van kernbestanden

Een van de meest fundamentele…WordPressVoor dit onderwerp zijn maar twee bestanden nodig:style.cssindex.phpMaar een “perfecte” themastructuur omvat veel meer dan alleen dit. Laten we eerst kijken naar de thema-informatiehoofdregel (theme information header).style.cssOp het begin van het bestand moeten de metadata van het onderwerp worden opgenomen. Deze informatie wordt gedefinieerd door een blok met commentaren in een specifieke format, en dient te worden gebruikt om...WordPressHet systeem bepaalt welk thema wordt gebruikt.

Aanbevolen leesmateriaal Van nul tot één: een introductie tot en praktische handleiding voor het ontwikkelen van WordPress-thema's

/*
Theme Name: My Perfect Theme
Theme URI: https://example.com/my-perfect-theme
Author: Your Name
Author URI: https://example.com
Description: 这是一个为学习和专业开发打造的完美WordPress主题。
Version: 1.0.0
License: GPL v2 or later
Text Domain: my-perfect-theme
*/

Text DomainDit wordt gebruikt voor internationalisatie en is een belangrijke identificatie voor de latere oproep van de vertaalfunctie. Hier volgt de hiërarchie van de templatebestanden.index.phpDit is het standaardtemplate voor het onderwerp, maar...WordPressVolg een bepaalde template-hiërarchie om te bepalen welke template-bestand wordt gebruikt voor verschillende pagina's. Bijvoorbeeld wordt bij het weergeven van een enkele artikel voorrang gegeven aan het zoekproces naar het juiste template.single.phpAls het niet bestaat, ga dan terug naar…index.phpOverige belangrijke templatebestanden zijn onder andere:header.php(Header)footer.php(FOOTER)sidebar.php(Sidebar)page.php(Pagina-template)front-page.php(Startpagina-template) enfunctions.php(Themafunctiefunctiebestand).

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.

Constructie van thema-templates en een cyclische systeem

WordPressHet kernpunt is de “cyclus”.PHPDe codestructuur is bedoeld om inhoud uit de database te halen en deze op de pagina te weergeven. Het begrijpen en correct gebruiken van cycli is van belang voor het ontwikkelen van toepassingen.

Modularisatie van de header, footer en sidebar

Om code te kunnen hergebruiken en gemakkelijk te onderhouden, is het noodzakelijk om de gemeenschappelijke delen van de pagina's te modulariseren.header.phpIn dit document moet je een verklaring over de type van het document opnemen.De inhoud van het gebied (inclusief dat wat wordt verstrekt via...)wp_head()De door de functies geïntroduceerde plugins en thema's vereisen bepaalde scriptstijlen, evenals een algemene structuur voor het begin van de pagina-inhoud, zoals het identificatievenmerk van de website en het hoofdmenu.

Hieronder moeten de twee volgende functies worden opgeroepen:wp_head()Plaats het opVoor de tag:body_class()Plaats het opBinnen deze tag worden CSS-klassen weergegeven die helpen bij het ontwerp van de stijl.

footer.phpDit bevat voornamelijk de inhoud die zich aan de onderkant van de pagina bevindt.wp_footer()De oproep van deze functie is een ‘hook’ waarmee het plugin code kan toevoegen aan de voet van de pagina. In het hoofdtemplate wordt deze functie gebruikt om de gewenste acties uit te voeren.get_header()get_footer()get_sidebar()Er zijn functies beschikbaar om deze modules in te voeren.

Aanbevolen leesmateriaal Een volledige gids voor het ontwikkelen van WordPress-thema's, van nul tot expert.

De belangrijkste concepten zijn de hoofdloop (main loop) en de template-taggen.

index.phpsingle.phpIn deze templates wordt standaardcyclering gebruikt om inhoud af te drukken. De template-taggen bestaan uit een reeks…PHPFunctie die gebruikt wordt om dynamische inhoud, zoals artikeltitels, inhoud en publicatie tijd, in en buiten een loop te weergeven.

<article id="post-<?php the_ID(); ?>" no numeric noise key 1007>
            <header class="entry-header">
                <h2 class="entry-title"><a href="/nl/</?php the_permalink(); ?>"><p><strong>Hallo wereld!</strong></p></a></h2>
                <div class="entry-meta">
                    | 作者:
                </div>
            </header>
            <div class="entry-content">
                <?php the_content(); ?>
            </div>
        </article>

In deze cyclus,the_title()the_content()the_permalink()the_time()the_author()post_class()Het zijn allemaal veelgebruikte template-taggen. Het is belangrijk om de context van verschillende pagina's (startpagina, categoriepagina's, zoekpagina's, detailpagina's) te begrijpen en om conditionele taggen (zoals %s, %1$s, {{var}}) op de juiste manier in te zetten.is_home()is_single()is_page()Dit kan zorgen voor een intelligenter uitstraling van je thema.

Integreren van stijlkenmerken, scripts en menufuncties

Modernere thema's zijn onlosbaar verbonden met...CSSJavaScriptEn een dynamisch navigatiemenu. De juiste manier van integreren zorgt niet alleen voor optimale prestaties, maar ook voor een goede samenwerking met...WordPressEcologische compatibiliteit.

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%

Registreer resources met het bestand functions.php

Alle styleheets en scriptbestanden moeten zich bevinden in...functions.phpDe inhoud van het bestand is verwerkt/gelezen.wp_enqueue_style()wp_enqueue_script()De functies worden geregistreerd en geplaatst in een wachtrij.WordPressDe officieel aanbevolen methode helpt bij het beheersen van afhankelijkheden, voorkomt dubbele laden en zorgt ervoor dat content op de juiste plek wordt weergegeven (bijvoorbeeld in de header of footer van de pagina).

function my_perfect_theme_scripts() {
    // 注册并排入主样式表
    wp_enqueue_style( 'my-perfect-theme-style', get_stylesheet_uri(), array(), '1.0.0' );
    // 注册并排入自定义JavaScript文件
    wp_enqueue_script( 'my-perfect-theme-navigation', get_template_directory_uri() . '/js/navigation.js', array('jquery'), '1.0.0', true );
}
add_action( 'wp_enqueue_scripts', 'my_perfect_theme_scripts' );

Let op.get_stylesheet_uri()Het wordt de inhoud van het onderwerp verkregen.style.cssenget_template_directory_uri()De URL wordt gebruikt om de inhoudsmap van het thema te halen, zodat deze kan worden gebruikt om andere bronnen te refereren. Zet de laatste parameter van het script op…trueHet kan worden geladen in de voetnoot van de pagina.

De navigatiemenu en de sidebar zijn geactiveerd.

WordPressHet menubeheersysteem beschikt over sterke functionaliteiten. Allereerst moet je ervoor zorgen dat je…register_nav_menus()De functie is beschikbaar.functions.phpIn de verklaring wordt aangegeven waar de ondersteunde keukenmogelijkheden zich bevinden.

Aanbevolen leesmateriaal Volledig handboek voor het ontwikkelen van WordPress-themes: van het beginnen voor beginners tot het uitvoeren van projecten in de praktijk

function my_perfect_theme_setup() {
    register_nav_menus( array(
        'primary' => __( '主导航菜单', 'my-perfect-theme' ),
        'footer'  => __( '页脚菜单', 'my-perfect-theme' ),
    ) );
}
add_action( 'after_setup_theme', 'my_perfect_theme_setup' );

Vervolgens, in het templatebestand (bijvoorbeeld...)header.phpIn dit voorbeeld wordt gebruikgemaakt vanwp_nav_menu()Er is een functie beschikbaar om een menu te weergeven. Voor widgets (sidesbars) moet je dit eerst gebruiken.register_sidebar()De functie registreert een klein hulpmiddelgebied, waarna dit gebied wordt gebruikt in het template.dynamic_sidebar()Roep het op.

Advanced functies en thema-aanpassingen realiseren

Een professioneel thema biedt gebruikers een groot aantal aangepaste mogelijkheden en houdt zich aan de beste praktijken om de kwaliteit en uitbreidbaarheid van het codebestand te garanderen.

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.

Extraanpassbare artikeltypes en categorieën toevoegen

Voor het weergeven van portfolio's, teamleden of andere niet-standaard artikelen, is het handig om een aangepaste artikeltyp te gebruiken. Ook kun je aangepaste categorieën maken om deze artikelen te ordenen. Deze codes worden meestal opgeslagen in een bepaald bestand of in de configuratie van het systeem.functions.phpOf in een aparte plugin.

function create_portfolio_post_type() {
    register_post_type( 'portfolio',
        array(
            'labels' => array(
                'name' => __( '作品集', 'my-perfect-theme' ),
                'singular_name' => __( '作品', 'my-perfect-theme' )
            ),
            'public' => true,
            'has_archive' => true,
            'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt' ),
            'menu_icon' => 'dashicons-portfolio',
        )
    );
}
add_action( 'init', 'create_portfolio_post_type' );

Nadat het is gecreëerd, kun je er vervolgens mee werken of het gebruiken voor…portfolioVoor deze custom artikeltype wordt een speciaal template-bestand gemaakt, bijvoorbeeld...single-portfolio.phparchive-portfolio.php

Optionen voor het bouwen van thema-customizatoren

WordPressCustomizatoren bieden gebruikers de mogelijkheid om de effecten van hun wijzigingen in real time te bekijken, waardoor ze de voorkeur geven aan deze optie wanneer ze thema's willen instellen. Je kunt dit doen door…WP_Customize_ManagerObjecten worden voorzien van instellingen en controlelementen.

function my_perfect_theme_customize_register( $wp_customize ) {
    // 添加一个“站点标识颜色”的设置
    $wp_customize->add_setting( 'primary_color', array(
        'default' => '#0073aa',
        'transport' => 'postMessage', // 支持实时预览刷新
    ) );
    // 为该设置添加一个颜色选择器控件
    $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'primary_color', array(
        'label' => __( '主色调', 'my-perfect-theme' ),
        'section' => 'colors',
    ) ) );
}
add_action( 'customize_register', 'my_perfect_theme_customize_register' );

En daarna kun je…style.cssOf door in-line-stijl te gebruiken.get_theme_mod(‘primary_color’)Deze code wordt gebruikt om de door de gebruiker ingestelde waarden op te halen en deze te toepassen op de front-end.

Samenvatting

Van het opzetten van de omgeving, het begrijpen van de bestandsstructuur, het bouwen van cycli en het integreren van resources, tot het realiseren van aangepaste artikeltypes en thema-customizatoren: een perfecte omgeving creëren.WordPressHet thema is een systeematisch onderzoek of ontwerpproces. Hierbij moet de ontwikkelaar niet alleen voldoende kennis en ervaring hebben in...PHPHTMLCSSJavaScriptJe moet het nog dieper begrijpen.WordPressDe kern-API's, het hook-systeem en de laagstructuur van de templates. Door de richtlijnen in dit artikel te volgen en aandacht te besteden aan de modulariteit, leesbaarheid en onderhoudbaarheid van het code, kun je een mooi en krachtig systeem ontwikkelen dat voldoet aan de moderne vereisten.WordPressStandaardthema's van hoge kwaliteit, waarmee je je professionele voordelen kunt vestigen in de wereld van websiteontwikkeling.

Veelgestelde vragen (FAQ)

Welke bestanden zijn minimaal nodig voor een WordPress-thema?

Een thema dat door WordPress herkend en geactiveerd kan worden, moet minstens twee bestanden bevatten:style.cssHet moet een blok met annotaties voor de koppen met thema-informatie bevatten; het andere is…index.phpDeze twee bestanden vormen het standaardtemplate voor het thema. Met alleen deze twee bestanden kan het thema in de achtergrond worden activerd, maar de mogelijkheden zijn zeer beperkt.

Hoe voeg je op de juiste manier JavaScript- en CSS-bestanden toe aan een thema?

Zorg er absoluut voor dat je geen directe referenties gebruikt in de templatebestanden.Tags worden gebruikt om resources in te leiden. De juiste manier om dit te doen, is in het thema (theme).functions.phpIn het bestand moet een functie worden gecreëerd, en deze functie moet worden gebruikt.wp_enqueue_style()wp_enqueue_script()Er is een functie beschikbaar om je style sheets en scripts te registreren en in een wachtrij te plaatsen. Vervolgens wordt deze functie gemonteerd (oftewel toegevoegd) aan het systeem.wp_enqueue_scriptsDezeactionOp de haak. Dit zorgt ervoor dat de afhankelijkheden goed worden beheerd en dat er geen conflicten ontstaan met andere plugins.

Wat is een template-hiërarchie en waarom is deze belangrijk?

De template-hiërarchie is een set regels die WordPress gebruikt om te bepalen welke templatebestand wordt gebruikt voor de pagina die wordt gevraagd. Bijvoorbeeld, wanneer je een blogartikel bezoekt, gebruikt WordPress deze regels om te bepalen welke inhoud en layout wordt weergegeven.single-post-{slug}.php -> single-post-{id}.php -> single.php -> singular.php -> index.phpDe zoektocht naar templatebestanden vindt plaats in een bepaalde volgorde, en het eerste gevonden bestand wordt gebruikt. Het begrijpen van deze hiërarchie helpt je om precies te kunnen bepalen hoe verschillende delen van de website worden weergegeven door templatebestanden met specifieke namen te creeren. Zo kun je bijvoorbeeld een unieke lay-out maken voor een bepaalde categorie of pagina.

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

Een 'overkoepelend thema' (parent theme) is een zelfstandig thema met alle benodigde functionaliteiten. Een 'onderthema' (subtheme) is afhankelijk van het overkoepelende thema en bevat alleen de inhoud die specifiek voor dat onderthema is bedoeld.style.cssfunctions.phpEn de templatebestanden van het overkoepelde thema (het ‘parent theme’) die je wilt aanpassen. Als er bestanden met dezelfde namen zijn in zowel het onderthema als het overkoepelde thema, gebruikt WordPress automatisch de bestanden uit het onderthema. Het belangrijkste doel van het gebruik van een onderthema is om veilig te kunnen aanpassen, stijlen te kunnen overschrijven en functies te kunnen uitbreiden, zonder de kernbestanden van het overkoepelde thema te hoeven te bewerken. Op deze manier worden je eigen aanpassingen niet overschreven wanneer het overkoepelde thema wordt bijgewerkt, waardoor het upgraden veiliger wordt. Bij het maken van een onderthema…style.cssDe informatie moet in het header worden opgenomen.Template:De regel bevat de naam van de map waarin het overkoepelde thema (parent topic) zich bevindt.