| WordPress | Kirby |
|---|---|
| WP_Query | $page->children(), site()->index(), filterBy() |
| Custom Post Types | Eigene Seitenstruktur + Templates + Blueprints |
| the_field(), get_field() (ACF) | $page->yourField() |
| ACF Repeater | Structure Field → $page->yourField()->toStructure() |
| functions.php | site/plugins/ oder config.php oder eigene Helper-Funktionen |
| add_theme_support() | Nicht nötig, da keine Themes – alles ist dein Code |
| get_template_part() | snippet(’name‘) oder eigene PHP-Includes |
| wp_enqueue_script() | vite, esbuild, manuell im head.php oder footer.php |
| is_front_page() | $page->isHomePage() |
| get_permalink() | $page->url() |
| get_the_title() | $page->title() |
| Custom Fields im Backend | Über Blueprints (site/blueprints/…) definieren |
| Gutenberg / Page Builder | Kein Builder – du baust exakt das, was du brauchst |
| admin_init, Hooks, Actions, Filters | Hooks mit Plugins oder kirby->hook() |
| REST API | Kirby bietet eine native API, oder du baust deine eigene mit PHP |
Strukturierte Felder (ACF Repeater)
YAML
fields:
items:
type: structure
fields:
title: { type: text }
image: { type: files }PHP
<?php foreach ($page->items()->toStructure() as $item): ?>
<h3><?= $item->title() ?></h3>
<img src="<?= $item->image()->toFile()->url() ?>" />
<?php endforeach ?>
Query Beispiele
Alle Unterseiten
PHP
$page->children()->listed()Alle Seiten im ganzen Projekt (wie WP_Query über CPTs)
PHP
site()->index()->filterBy('template', 'blog')Seiten nach Datum sortieren
PHP
$page->children()->listed()->sortBy('date', 'desc')Nur bestimmte Kategorie (z. B. Feld „category“)
PHP
$page->children()->filterBy('category', 'design')Snippets statt get_template_part()
PHP
// Snippet einbinden
<?= snippet('header') ?>PHP
// Datei: site/snippets/header.php
<header>
<h1><?= $site->title() ?></h1>
</header>Dateistruktur (vereinfacht)
CSS
site/
blueprints/ ← Felder und Admin-UI
templates/ ← PHP-Templates für Seiten
snippets/ ← Wiederverwendbare PHP-Teile
plugins/ ← Eigene Funktionen, Erweiterungen
content/
blog/
erster-artikel/
article.txt ← Felder als TextdateiEntwicklung
- Du kannst npm, Vite, Tailwind, Alpine.js, Splide etc. direkt integrieren.
- Kein Build-Prozess vorgegeben – volle Freiheit.
- Kein Composer-Zwang, aber möglich.
Vorteile für WP-Dev
- Keine Datenbank, keine Updateschlacht
- Extrem performant, da flat file
- Admin-Panel via Panel UI, stark anpassbar
- Saubere Trennung von Code und Content
- Vollständige Kontrolle über alles