Kennst du das Gefühl?
Du sitzt in deinem ersten Webdev-Job oder an deinem ersten größeren Freelance-Projekt. Dein Kollege oder Tech-Lead wirft mit Begriffen um sich wie “Docker”, “CI/CD” und “Hot Module Replacement”. Währenddessen kämpfst du noch mit XAMPP, das zum dritten Mal heute abgestürzt ist, weil Apache und ein anderer Prozess sich um Port 80 kloppen.
Deine React-Developer-Freunde entwickeln mit Vite und haben Live-Reload. Deine Vue.js-Buddies deployen mit einem Git-Push. Und du? Du lädst noch per FTP hoch und hoffst, dass du nicht aus Versehen die Production-Database überschrieben hast.
WordPress-Development fühlt sich manchmal an wie Webentwicklung aus 2009.
Aber hier ist die Wahrheit, die dir keiner erzählt: WordPress ist nicht das Problem. Dein Setup ist das Problem.
WordPress selbst ist eine extrem mächtige Plattform. Sie läuft auf über 40% aller Websites weltweit – von persönlichen Blogs bis zu News-Portalen mit Millionen von Besuchern. Große Unternehmen, Agenturen und Publisher setzen auf WordPress, weil es funktioniert.
Das Problem ist nur: Die meisten Tutorials und Kurse zeigen dir noch immer den Workflow von 2009.
Zeit, das zu ändern.
Vorweg: Für wen dieser Kurs NICHT ist:
- Statt an eigenen Designs, lädst di dir leiber schnell ein überladendes Theme mit Code von 2015 runter von Envato runter und befüllst es mit Content
- Du arbeitest zwar schon ewig mit Wordpress, aber willst nach wie vor an Elementor oder DIVI oder anderem WYSIWYG-Bloat festhalten
- Statt eigenen Code zu schreiben, installierst du lieber schnell ein Plugin
- Du glaubst Webentwicklung sei heute komplett ohne Coden möglich
oder aber…
Du willst endlich in die Profi-Liga! Hier ist deine Chance.
Stell dir vor, du entwickelst WordPress-Themes mit dem gleichen modernen Stack, den die “coolen Kids” bei React und Vue nutzen:
- Du speicherst deine CSS-Datei → Die Änderung erscheint SOFORT im Browser. Kein Reload. Kein F5-Spam.
- Du bearbeitest JavaScript → Hot Module Replacement macht den Browser-Refresh überflüssig.
- Du testest auf drei Devices gleichzeitig (Desktop, Tablet, Handy) → Alle synchronisieren automatisch dein Scrolling und deine Clicks.
- Du pushst deinen Code zu GitHub → GitHub Actions deployt automatisch auf deinen Server.
Das ist nicht Zukunftsmusik. Das ist 2025. Und genau das wirst du nach dieser Tutorial-Serie können.
Versprochen.
Was diese Serie anders macht
Es gibt gefühlt 10.000 WordPress-Tutorials im Netz. Die meisten zeigen dir, wie man ein Theme mit functions.php
bastelt und hoffen, dass du den Rest googelst.
Diese Serie ist anders.
Ich zeige dir nicht nur, wie man WordPress-Themes baut. Ich zeige dir, wie man als moderner, professioneller Web-Developer mit WordPress arbeitet – mit Tools und Workflows, die du auch in deinem nächsten Job bei einer hippen Agentur oder einem Tech-Startup brauchst.
In dieser vierteiligen Serie lernst du:
Teil 1 (dieser Artikel): DDEV Setup + pnpm Integration + Vite Grundlagen
- Lokale WordPress-Umgebung in 2 Minuten (ohne PHP zu installieren)
- Package Management wie die Profis
- Hot Module Replacement für CSS & JavaScript
Teil 2 (kommende Woche): Tailwind CSS + BrowserSync für Multi-Device Testing
- Utility-First CSS ohne Custom-CSS-Hölle
- Multi-Device Testing mit synchronisiertem Scrolling
- PHP-File-Watching für automatische Reloads
Teil 3 (in zwei Wochen): Vue.js Integration für interaktive Komponenten
- Moderne JavaScript-Komponenten in WordPress
- REST API Integration wie ein Boss
- Praktisches Beispiel: Interaktive Filter-Komponente
Teil 4 (coming soon): Deployment auf Google Cloud Platform
- Production-Build erstellen
- Automated Deployment mit GitHub Actions
- SSL, Caching, CDN – the whole nine yards
Nach dieser Serie entwickelst du WordPress-Projekte auf dem Level, das Agenturen und Tech-Companies erwarten. Kein Bullshit, kein veraltetes Zeug, kein “das machen wir aber schon seit 15 Jahren so”.
Warum dieser Stack die Zukunft ist (und dein alter Workflow Steinzeit)
Der klassische WordPress-Workflow sieht so aus:
- XAMPP starten (hoffen, dass Apache läuft)
- CSS ändern
- Browser reloaden
- Sieht scheiße aus
- CSS ändern
- Browser reloaden
- Immer noch scheiße
- CSS ändern
- Browser reloaden
- Endlich gut – aber jetzt ist es 3 Uhr morgens und du hasst dein Leben
Das ist Zeitverschwendung. Und genau deshalb denken viele, WordPress-Development sei “langsam” oder “altmodisch”.
Die React- und Vue-Entwickler lachen über uns. Und ehrlich? Zu Recht. Aber nicht, weil WordPress schlecht ist – sondern weil wir die falschen Tools benutzen.
Zeit, das zu ändern. Hier ist, was du mit dem modernen Stack bekommst:
⚡ DDEV – Docker ohne Kopfschmerzen
Vergiss XAMPP, MAMP und “funktioniert bei mir”-Probleme. DDEV gibt dir eine professionelle, containerisierte Entwicklungsumgebung, die bei jedem im Team exakt gleich funktioniert.
- ✅ Keine PHP-Installation auf deinem System nötig
- ✅ Keine Datenbank-Konfiguration
- ✅ Funktioniert auf Windows, Mac und Linux
- ✅ Mehrere Projekte parallel – kein Port-Konflikt-Chaos
- ✅ WP-CLI integriert – WordPress per Command Line steuern
📦 pnpm – Package Management auf Speed
npm ist ok. Yarn ist besser. Aber pnpm? Das ist der neue Standard.
- ✅ Bis zu 2x schneller als npm
- ✅ Deutlich weniger Speicherplatz (durch intelligentes Linking)
- ✅ Sauberer Dependency-Tree ohne Chaos
- ✅ Funktioniert mit allen npm-Packages
🚀 Vite – Hot Module Replacement like a Boss
Das ist das Game-Changer-Tool. Vite ist der Build-Tool-Standard 2025.
- ✅ Instant Updates im Browser (Hot Module Replacement)
- ✅ Ultraschnelle Development-Server-Starts
- ✅ Optimierte Production-Builds out of the box
- ✅ Modern JavaScript & TypeScript Support
Du änderst eine CSS-Farbe → Die Änderung ist SOFORT im Browser, ohne Reload. Du editierst JavaScript → Hot Module Replacement lädt nur die Änderung, nicht die ganze Page.
Das allein spart dir Stunden pro Woche. Ernsthaft.
Und in den kommenden Teilen:
- 🎨 Tailwind CSS: Utility-First CSS – nie wieder Custom CSS schreiben
- 🔄 BrowserSync: Multi-Device Testing mit Sync (Handy + Tablet + Desktop gleichzeitig)
- 🖖 Vue.js: Moderne, reactive Components direkt in WordPress
- ☁️ Cloud Deployment: Professional Hosting mit GitHub Actions
Nach dieser Serie bist du schneller als die meisten React-Devs. WordPress + moderner Stack = Game over für die Konkurrenz. 💪
Was du brauchst (und was du endlich loswerden kannst)
✅ Das brauchst du:
- Docker Desktop (Windows/Mac) oder Docker Engine (Linux)
- DDEV (Installationsanleitung)
- Node.js 20+ (für pnpm)
- 15 Minuten Zeit (mehr nicht, versprochen)
- Die Bereitschaft, alte Gewohnheiten über Bord zu werfen
❌ Das kannst du endlich vergessen:
- ❌ XAMPP deinstallieren – für immer
- ❌ MAMP in den Müll werfen – good riddance
- ❌ Apache/Nginx lokal konfigurieren – nie wieder
- ❌ PHP manuell installieren – not today, Satan
- ❌ phpMyAdmin-Fummelei – sayonara
- ❌ “Funktioniert bei mir”-Probleme – endlich vorbei
Schau dass du folgendes installiert hast:
- Docker Desktop (Windows/Mac) oder Docker Engine (Linux)
- DDEV (Installationsanleitung)
- Node.js 22+ (für pnpm)
Überprüfe deine Installation:
docker --version
ddev version
node --version
Alles da? Perfekt! Los geht’s.
Schritt 1: WordPress mit DDEV aufsetzen
DDEV macht das WordPress-Setup lächerlich einfach. Keine komplizierte Konfiguration, keine PHP-Installation auf deinem System.
Neues Projekt erstellen
mkdir mein-wp-projekt
cd mein-wp-projekt
ddev config --project-type=wordpress --docroot="" --php-version=8.2
ddev start
Was passiert hier?
--project-type=wordpress
: DDEV konfiguriert alles für WordPress--docroot=""
: WordPress-Dateien im Root-Verzeichnis--php-version=8.2
: Aktuelle PHP-Version
WordPress installieren
ddev wp core download --locale=de_DE
ddev wp core install \
--url='$DDEV_PRIMARY_URL' \
--title='Mein Modernes WP-Projekt' \
--admin_user=admin \
--admin_password=admin \
--admin_email=admin@example.com
Wichtig: Das $DDEV_PRIMARY_URL
wird automatisch durch deine DDEV-URL ersetzt (z.B. mein-wp-projekt.ddev.site
).
Erste Überprüfung
ddev launch
Dein WordPress sollte jetzt im Browser öffnen! 🎉
Admin-Login:
ddev launch wp-admin/
Schritt 2: pnpm-Integration in DDEV
pnpm
ist schneller und speichersparender als npm
. Zeit, es zu integrieren.
pnpm-Add-on installieren
ddev add-on get envsa/ddev-pnpm
ddev restart
Alternativ: Corepack aktivieren
In deiner .ddev/config.yaml
kannst du auch direkt Corepack aktivieren:
nodejs_version: "22"
corepack_enable: true
Dann:
ddev restart
ddev exec corepack enable
pnpm testen
ddev pnpm --version
Du solltest die pnpm-Version sehen. Perfekt!
Schritt 3: Theme-Struktur vorbereiten
Wir erstellen ein modernes Theme mit sauberer Struktur.
cd wp-content/themes
mkdir mein-modernes-theme
cd mein-modernes-theme
Theme-Dateien erstellen
style.css:
/*
Theme Name: Mein Modernes Theme
Theme URI: https://deinedomain.de
Description: Ein modernes WordPress-Theme mit Vite und Tailwind
Version: 1.0.0
Author: Dein Name
*/
index.php:
<!DOCTYPE html>
<html <?php language_attributes(); ?>>
<head>
<meta charset="<?php bloginfo('charset'); ?>">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<?php wp_head(); ?>
</head>
<body <?php body_class(); ?>>
<h1>Mein Modernes WordPress-Theme</h1>
<?php
if (have_posts()) :
while (have_posts()) : the_post();
the_title('<h2>', '</h2>');
the_content();
endwhile;
endif;
?>
<?php wp_footer(); ?>
</body>
</html>
functions.php:
<?php
add_action('after_setup_theme', function() {
add_theme_support('title-tag');
add_theme_support('post-thumbnails');
});
Schritt 4: Vite installieren und konfigurieren
Jetzt wird es spannend: Vite für ultraschnelles Development!
Im Theme-Verzeichnis
cd wp-content/themes/mein-modernes-theme
ddev pnpm init
Vite installieren
ddev pnpm add -D vite
package.json Scripts
Öffne package.json
und füge hinzu:
{
"name": "mein-modernes-theme",
"version": "1.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview"
},
"devDependencies": {
"vite": "^5.0.0"
}
}
Vite-Konfiguration erstellen
vite.config.js:
import { defineConfig } from 'vite'
import path from 'path'
export default defineConfig({
server: {
host: '0.0.0.0',
port: 5173,
strictPort: true,
origin: `${process.env.DDEV_PRIMARY_URL?.replace(/:\d+$/, '') || 'http://localhost'}:5173`,
cors: {
origin: /https?:\/\/([A-Za-z0-9\-\.]+)?(\.ddev\.site)(?::\d+)?$/
}
},
build: {
manifest: true,
outDir: 'dist',
rollupOptions: {
input: {
main: path.resolve(__dirname, 'src/main.js')
}
}
}
})
Asset-Struktur erstellen
mkdir -p src/css src/js
src/main.js:
import './css/main.css'
console.log('Vite + WordPress = 🚀')
document.addEventListener('DOMContentLoaded', () => {
console.log('WordPress Theme mit Vite geladen!')
})
src/css/main.css:
:root {
--primary-color: #0073aa;
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
line-height: 1.6;
padding: 2rem;
max-width: 1200px;
margin: 0 auto;
}
h1 {
color: var(--primary-color);
font-size: 2.5rem;
}
Schritt 5: DDEV für Vite konfigurieren
Ports exponieren
Bearbeite .ddev/config.yaml
:
web_extra_exposed_ports:
- name: vite
container_port: 5173
http_port: 5172
https_port: 5173
Vite automatisch starten
web_extra_daemons:
- name: 'vite'
command: "pnpm install && pnpm run dev"
directory: /var/www/html/wp-content/themes/mein-modernes-theme
DDEV neu starten
ddev restart
Schritt 6: Vite-Assets in WordPress einbinden
Zeit, die Vite-Assets in WordPress zu laden!
PHP-Klasse für Asset-Management
Erstelle inc/class-vite.php
:
<?php
class Vite_Assets {
private $is_dev;
private $manifest;
public function __construct() {
$this->is_dev = getenv('ENVIRONMENT') !== 'production';
}
public function enqueue() {
if ($this->is_dev) {
$this->enqueue_dev_assets();
} else {
$this->enqueue_prod_assets();
}
}
private function enqueue_dev_assets() {
$vite_url = 'https://' . $_SERVER['HTTP_HOST'] . ':5173';
wp_enqueue_script(
'vite-client',
$vite_url . '/@vite/client',
array(),
null,
false
);
wp_script_add_data('vite-client', 'type', 'module');
wp_enqueue_script(
'theme-main',
$vite_url . '/src/main.js',
array('vite-client'),
null,
false
);
wp_script_add_data('theme-main', 'type', 'module');
}
private function enqueue_prod_assets() {
$manifest_path = get_template_directory() . '/dist/.vite/manifest.json';
if (!file_exists($manifest_path)) {
return;
}
$this->manifest = json_decode(file_get_contents($manifest_path), true);
if (isset($this->manifest['src/main.js'])) {
$entry = $this->manifest['src/main.js'];
wp_enqueue_script(
'theme-main',
get_template_directory_uri() . '/dist/' . $entry['file'],
array(),
null,
true
);
if (isset($entry['css'])) {
foreach ($entry['css'] as $css_file) {
wp_enqueue_style(
'theme-main-css',
get_template_directory_uri() . '/dist/' . $css_file,
array(),
null
);
}
}
}
}
}
In functions.php
einbinden
functions.php
aktualisieren:
<?php
require_once get_template_directory() . '/inc/class-vite.php';
add_action('after_setup_theme', function() {
add_theme_support('title-tag');
add_theme_support('post-thumbnails');
});
add_action('wp_enqueue_scripts', function() {
$vite_assets = new Vite_Assets();
$vite_assets->enqueue();
});
Schritt 7: Hot Module Replacement testen
Zeit für den magischen Moment! 🎩✨
Vite läuft?
Überprüfe, ob Vite läuft:
ddev logs | grep vite
Du solltest sehen:
vite | VITE v5.x.x ready in XXX ms
vite | ➜ Local: http://localhost:5173/
Browser öffnen
ddev launch
Ändere CSS live
Öffne src/css/main.css
und ändere:
h1 {
color: #ff0000; /* Von blau zu rot */
font-size: 3rem;
}
Speichern – und sieh zu, wie die Änderung sofort im Browser erscheint, ohne Reload! 🚀
JavaScript-Änderungen testen
Öffne src/main.js
:
import './css/main.css'
console.log('🔥 Vite HMR ist LIVE!')
document.addEventListener('DOMContentLoaded', () => {
const h1 = document.querySelector('h1')
if (h1) {
h1.style.transition = 'all 0.3s'
h1.addEventListener('mouseenter', () => {
h1.style.transform = 'scale(1.1)'
})
h1.addEventListener('mouseleave', () => {
h1.style.transform = 'scale(1)'
})
}
})
Speichern und beobachte – instant update im Browser! ⚡
Production Build
Wenn du fertig entwickelt hast:
ddev pnpm run build
Dies erstellt optimierte, produktionsreife Assets in dist/
.
Troubleshooting
Vite läuft nicht?
ddev logs -f
Suche nach Fehlermeldungen im vite
Service.
Assets werden nicht geladen?
- Überprüfe Browser-Console auf CORS-Fehler
- Stelle sicher, dass Port
5173
in.ddev/config.yaml
exponiert ist ddev restart
ausführen
HMR funktioniert nicht?
- Browser-Cache leeren
- DevTools Network-Tab: Prüfe, ob
@vite/client
geladen wird - Stelle sicher, dass
type="module"
bei den Scripts gesetzt ist
Was kommt in Teil 2?
Im nächsten Teil der Serie fügen wir hinzu:
- ✅ Tailwind CSS für Utility-First Styling
- ✅ BrowserSync für Multi-Device Testing mit Synchronisation
- ✅ Automatische Browser-Reloads bei PHP-Änderungen
- ✅ Mobile Testing auf echten Geräten im lokalen Netzwerk
Fazit
Du hast jetzt einen professionellen WordPress-Entwicklungsworkflow mit:
- ⚡ DDEV – Containerisierte lokale Umgebung
- 📦 pnpm – Schnelles Package Management
- 🚀 Vite – Hot Module Replacement für sofortige Updates
Das ist erst der Anfang! In Teil 2 bringen wir Tailwind CSS und Multi-Device Testing mit BrowserSync dazu.