WordPress als Headless CMS mit Laravel als leistungsfähiges PHP-Framework zu kombinieren – das ist kein theoretisches Konstrukt, sondern eine bewährte Architekturentscheidung, die wir in unseren Projekten immer häufiger sehen. Dieser Artikel zeigt, warum die WordPress REST API dafür das ideale Bindeglied ist und wie die Integration in der Praxis funktioniert.
WordPress trifft Laravel: Zwei Stärken, eine Architektur
Wer WordPress kennt, schätzt vor allem eines: die redaktionelle Oberfläche. Inhalte anlegen, strukturieren, veröffentlichen – das gelingt auch ohne technisches Vorwissen in Minuten. Gleichzeitig stoßen reine WordPress-Installationen schnell an ihre Grenzen, sobald individuelle Geschäftslogik, komplexe Datenbankoperationen oder skalierbare Webanwendungen gefragt sind.
Laravel füllt genau diese Lücke. Das Framework hilft Entwicklern aller Erfahrungsstufen, stabilere Anwendungen zu bauen, indem es korrekten Syntax und strukturierte Datenbankinteraktionen fördert. Das Ergebnis: Beide Systeme können das tun, was sie am besten können – WordPress verwaltet Inhalte, Laravel übernimmt die Anwendungslogik.
Der Schlüssel, der diese beiden Welten verbindet, ist die WordPress REST API. Sie stellt REST-Endpunkte bereit, die Posts, Seiten, Taxonomien und andere WordPress-Datentypen repräsentieren – Anwendungen können JSON-Daten an diese Endpunkte senden und empfangen, um Inhalte abzufragen, zu verändern oder neu zu erstellen.
Für Unternehmen, die bereits auf WordPress als Content-Plattform setzen und gleichzeitig eine maßgeschneiderte Webanwendung aufbauen möchten, ist diese Kombination besonders attraktiv: Der redaktionelle Workflow bleibt unangetastet, während die technische Infrastruktur vollständig kontrollierbar bleibt.
Was die WordPress REST API heute leistet
WordPress liefert seit Version 4.7 eine umfassende REST API direkt im Core mit. Der Basis-Endpunkt ist sofort verfügbar – ohne Konfiguration, ohne Plugin.
Die API stellt Endpunkte bereit, die Posts, Seiten, Taxonomien und andere eingebaute WordPress-Datentypen repräsentieren. Anwendungen können JSON-Daten an diese Endpunkte senden und empfangen, um Inhalte abzufragen, zu verändern oder neu zu erstellen.
Das URL-Schema für Abfragen ist dabei konsistent und intuitiv aufgebaut:
https://ihre-domain.de/wp-json/wp/v2/[endpoint]?[parameter]
Die Core-Endpunkte nutzen v2 als Versionsbezeichner – sie repräsentieren Version 2 der WordPress REST API. Öffentlich zugängliche Inhalte – also Posts, Kategorien, Tags, Seiten und Medien – lassen sich ohne Authentifizierung abrufen. Ein einfacher GET-Request auf /wp-json/wp/v2/posts liefert die letzten Beiträge als strukturiertes JSON-Objekt zurück.
Die API unterstützt dabei eine Vielzahl von Filterparametern:
per_page– Anzahl der zurückgegebenen Einträgepage– Pagination der Ergebnisseorderby– Sortierung (date, title, relevance, etc.)search– Volltextsuche innerhalb der Inhaltecategories– Filterung nach Kategorie-ID_embed– Einbettung verknüpfter Ressourcen wie Featured Images
Aktuell unterstützt die API folgende WordPress-Ressourcen: Kategorien, Kommentare, Medien, Seiten, Posts und Benutzer.
Authentifizierung: Wann sie notwendig ist
Die REST API implementiert dieselben Authentifizierungsrestriktionen wie WordPress selbst: Inhalte, die auf der Website öffentlich zugänglich sind, sind in der Regel auch über die REST API öffentlich abrufbar – private Inhalte, passwortgeschützte Inhalte, interne Benutzer, Custom Post Types und Metadaten sind nur nach Authentifizierung verfügbar.
Für das reine Einlesen von Blog-Posts, Kategorien und öffentlichen Seiten ist keine Authentifizierung erforderlich. Sobald jedoch Schreiboperationen – also POST, PUT oder DELETE – ins Spiel kommen, wird eine Authentifizierung notwendig. Dabei bietet sich JWT-Authentifizierung an: Sie sichert die Kommunikation zwischen Laravel und WordPress mithilfe von JSON Web Tokens und ermöglicht CRUD-Operationen über die REST API.
Laravel als Konsument der WordPress REST API
Laravels robuster HTTP-Client und die API-Unterstützung machen es einfach, RESTful-Services zu konsumieren. Durch den Einsatz von WordPress als Headless CMS lassen sich Inhalte über APIs bereitstellen und in Laravel vollständig individualisiert präsentieren.
Der Laravel HTTP Client: Modern und ausdrucksstark
Seit Laravel 7 steht mit dem integrierten HTTP-Client – basierend auf Guzzle – ein elegantes Interface für externe API-Requests zur Verfügung. Ein einfacher Aufruf der WordPress REST API sieht damit so aus:
use Illuminate\Support\Facades\Http;
$response = Http::get('https://ihre-wordpress-domain.de/wp-json/wp/v2/posts', [
'per_page' => 10,
'orderby' => 'date',
'_embed' => 1,
]);
$posts = $response->json();
Das Ergebnis ist ein strukturiertes PHP-Array, das sich direkt in Blade-Templates oder als JSON-Response an ein Frontend weitergeben lässt. Die gesamte Komplexität des HTTP-Requests wird durch Laravels Fluent-Interface abstrahiert.
Fluent Query Building mit dem laravel-wordpress-api Package
Für Projekte, in denen die WordPress-Integration eine zentrale Rolle spielt, empfiehlt sich ein dediziertes Package. Das Package rickwest/laravel-wordpress-api entstand als Lösung für Entwickler, die einen ausdrucksstärkeren, Laravel-typischen Weg suchen, die WordPress API abzufragen – statt manueller HTTP-Aufrufe bietet es eine fluente Query-Builder-Syntax.
Statt:
Http::get('https://example.com/wp-json/wp/v2/posts', [
'search' => 'laravel',
'_embed' => 1,
'orderby' => 'date',
'order' => 'desc',
]);
schreibt man:
WordPress::posts()
->search('laravel')
->embed()
->latest()
->get();
Zusätzlich zur ausdrucksstarken Query-Syntax liefert das Package eine strukturierte Response inklusive Paginierungsinformationen – der Array enthält sowohl data als auch meta mit pages und total.
Architektur: So strukturieren wir die Integration
In unseren Projekten empfehlen wir eine klare Schichtentrennung. Die WordPress REST API wird nicht direkt aus Controllern oder Views heraus aufgerufen – stattdessen kapseln wir die Kommunikation in einem dedizierten Service.
// app/Services/WordPressContentService.php
namespace App\Services;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Cache;
class WordPressContentService
{
protected string $baseUrl;
public function __construct()
{
$this->baseUrl = config('services.wordpress.url');
}
public function getLatestPosts(int $perPage = 5): array
{
return Cache::remember("wp_posts_{$perPage}", 3600, function () use ($perPage) {
$response = Http::get("{$this->baseUrl}/wp-json/wp/v2/posts", [
'per_page' => $perPage,
'orderby' => 'date',
'_embed' => 1,
]);
return $response->successful() ? $response->json() : [];
});
}
public function getPostBySlug(string $slug): ?array
{
$response = Http::get("{$this->baseUrl}/wp-json/wp/v2/posts", [
'slug' => $slug,
'_embed' => 1,
]);
$posts = $response->json();
return !empty($posts) ? $posts[0] : null;
}
}
Dieser Aufbau hat mehrere Vorteile: Die WordPress-URL wird über die .env-Konfiguration gesteuert, das Caching ist zentral geregelt, und der Controller bleibt schlank.
Caching: Pflicht, nicht Kür
Laravel-Best-Practices empfehlen Cache-Tags und Cache-Invalidierungsstrategien, um gecachte Daten effektiv zu verwalten und veraltete Informationen zu vermeiden. Regelmäßig abgerufene Daten, die sich selten ändern, sollten gecacht werden – das reduziert den Overhead beim Datenbankzugriff erheblich.
Bei der WordPress-API-Integration ist Caching besonders wichtig: Jeder ungecachte API-Request bedeutet einen HTTP-Roundtrip zu einem externen System. Die remember()-Methode von Laravel cached Daten nur dann, wenn sie noch nicht im Cache vorhanden sind. Für Blog-Inhalte, die sich selten ändern, ist eine TTL von 30 bis 60 Minuten in den meisten Fällen sinnvoll.
Praxisbeispiel: Blog-Inhalte im Laravel-Frontend
Ein typischer Anwendungsfall: Eine Unternehmenswebsite auf Laravel-Basis soll die Blog-Artikel aus einer bestehenden WordPress-Installation einlesen und im eigenen Design darstellen. Die Redaktion arbeitet weiterhin im gewohnten WordPress-Backend, während das Frontend vollständig unter Kontrolle des Entwicklerteams liegt.
Controller:
// app/Http/Controllers/BlogController.php
namespace App\Http\Controllers;
use App\Services\WordPressContentService;
class BlogController extends Controller
{
public function __construct(
private WordPressContentService $wpService
) {}
public function index()
{
$posts = $this->wpService->getLatestPosts(perPage: 9);
return view('blog.index', compact('posts'));
}
public function show(string $slug)
{
$post = $this->wpService->getPostBySlug($slug);
abort_if(is_null($post), 404);
return view('blog.show', compact('post'));
}
}
Blade-Template (Ausschnitt):
@foreach ($posts as $post)
<article class="blog-card">
<h2>{{ $post['title']['rendered'] }}</h2>
<div class="excerpt">
{!! $post['excerpt']['rendered'] !!}
</div>
<a href="/blog/{{ $post['slug'] }}">Weiterlesen</a>
</article>
@endforeach
Der _embed-Parameter in der API-Abfrage stellt sicher, dass Featured Images und Autoreninformationen bereits in der ersten Antwort mitgeliefert werden – ohne weitere API-Requests.
Weiterführende Szenarien und Einsatzmöglichkeiten
WordPress als reines Headless CMS
Die WordPress REST API transformiert WordPress von einem traditionellen CMS zu einer flexiblen Anwendungsplattform: Sie ermöglicht Headless-WordPress-Implementierungen, mobile Apps, Drittanbieter-Integrationen und JavaScript-Anwendungen, die WordPress-Daten konsumieren.
In diesem Szenario wird WordPress ausschließlich als Content-Backend genutzt. Das Frontend – ob Laravel, Vue.js, React oder eine mobile App – kommuniziert ausschließlich über die REST API. Diese Kombination schafft Flexibilität, saubereren Code und einen skalierbaren Workflow. Der Ansatz hält Inhalte von der Anwendungslogik getrennt, was Updates einfacher und sicherer macht.
Datensynchronisation in die Laravel-Datenbank
Eine weitere Option ist die Synchronisation: Inhalte werden aus der WordPress API abgerufen und in der eigenen Laravel-Datenbank gespeichert. Der Vorteil: vollständige Trennung beider Systeme. Dieses Muster bietet sich an, wenn maximale Performance gefragt ist oder WordPress offline gehen können muss, ohne dass die Laravel-Anwendung davon betroffen ist. Ein Laravel-Scheduler übernimmt dabei die regelmäßige Synchronisation.
CRUD-Operationen: Inhalte aus Laravel schreiben
Wer nicht nur lesen, sondern auch Inhalte über die API erstellen oder aktualisieren möchte, benötigt Authentifizierung. Eine Laravel-Anwendung, die CRUD-Operationen über die WordPress REST API mit JWT-Authentifizierung durchführt, bietet eine robuste Lösung für das Verwalten von WordPress-Inhalten aus einer externen Anwendung heraus.
Seit WordPress 5.6 bieten Application Passwords eine elegante Alternative zu JWT-Tokens: Ein dediziertes Passwort für die API-Kommunikation, getrennt vom regulären Login-Passwort.
Sicherheit und Performance: Was man nicht übersehen sollte
CORS und Zugriffskontrolle
Die WordPress REST API ist um REST herum aufgebaut und verwendet vorhersehbare, ressourcenorientierte URLs sowie HTTP-Response-Codes für Fehleranzeigen. Die API nutzt eingebaute HTTP-Features wie HTTP-Authentifizierung und HTTP-Verben und unterstützt Cross-Origin Resource Sharing, um die sichere Interaktion von clientseitigen Webanwendungen zu ermöglichen.
Wer die API nur intern verwendet – also ausschließlich aus dem eigenen Laravel-Backend heraus –, sollte CORS-Anfragen auf die eigene Domain beschränken. Das lässt sich in WordPress über entsprechende Filter-Hooks oder Server-Konfiguration steuern.
Benutzerdaten und Datenschutz
Der /wp-json/wp/v2/users/-Endpunkt kann von Sicherheitsscannern als Username-Enumeration-Schwachstelle identifiziert werden. Das WordPress-Projekt betrachtet Benutzernamen und Benutzer-IDs zwar nicht als private Informationen – dennoch sollten alle Benutzerkonten starke Passwörter und Zwei-Faktor-Authentifizierung verwenden. In produktiven Setups empfehlen wir, den Users-Endpunkt zu deaktivieren, wenn er nicht benötigt wird.
Pretty Permalinks: Grundvoraussetzung
Damit die WordPress REST API korrekt funktioniert, müssen Pretty Permalinks in WordPress aktiviert sein. Sind sie nicht aktiviert, lädt der Aufruf eines REST-API-Endpunkts stattdessen die Startseite. Das ist ein häufiger Fallstrick bei frischen WordPress-Installationen.
Performance-Überlegungen auf der WordPress-Seite
Die Nutzung der REST API sollte so strukturiert werden, dass sowohl die Anwendung als auch die WordPress-Installation so performant und stabil wie möglich bleiben. Bei signifikanter API-Nutzung – etwa wenn das Frontend einer Website vollständig über API-Requests generiert wird – sollten Caching-Strategie, Cache-Invalidierung und Response-Zeiten von Anfang an eingeplant werden.
Klassische WordPress-Performance-Optimierungen gelten auch für REST-API-Responses: Object Caching zur Reduzierung teurer Datenbankoperationen und die Vermeidung externer HTTP-Requests innerhalb von API-Callbacks.
Wann diese Architektur die richtige Wahl ist
Die WordPress-Laravel-Integration über die REST API ist keine Universallösung. Sie entfaltet ihren Mehrwert in spezifischen Szenarien:
Geeignet, wenn:
- Eine bestehende WordPress-Redaktion weiterarbeiten soll, ohne das Frontend zu berühren
- Die Webanwendung komplexe Logik erfordert, die WordPress-Plugins nicht abbilden können
- Inhalte aus WordPress in eine größere Plattform eingebunden werden sollen
- Performance-Anforderungen eine saubere Trennung von Content und Anwendung erfordern
Weniger geeignet, wenn:
- WordPress ausschließlich als einfache Blog-Plattform ohne angrenzende Anwendungslogik betrieben wird
- Das Team keine PHP- oder Laravel-Kenntnisse mitbringt
- Latenz ein kritischer Faktor ist und kein Caching-Layer implementiert werden kann
Das sehen wir immer wieder in Projekten: Unternehmen, die frühzeitig auf eine saubere API-Architektur gesetzt haben, behalten die volle Kontrolle über ihr Frontend – unabhängig davon, welches CMS im Hintergrund läuft. Die Investition in eine durchdachte Integration zahlt sich spätestens dann aus, wenn das CMS gewechselt oder das Frontend neu aufgebaut werden soll.
Fazit
Jede Programmiersprache, die HTTP-Requests machen und JSON interpretieren kann, lässt sich nutzen, um mit WordPress über die REST API zu interagieren – von PHP über Node.js bis hin zu Go, Java, Swift und Kotlin. Laravel ist dabei eine besonders elegante Wahl: Der integrierte HTTP-Client, das Caching-System und die klare MVC-Architektur ergänzen die WordPress REST API auf natürliche Weise.
Die Kombination aus WordPress als redaktionsfreundlichem Backend und Laravel als leistungsfähiger PHP-Entwicklungsplattform ist mehr als ein technischer Kompromiss – sie ist eine strategische Architekturentscheidung, die langfristige Flexibilität schafft. Redakteure arbeiten im gewohnten Umfeld, Entwickler behalten die vollständige Kontrolle über das Frontend und die Anwendungslogik.
Wenn Sie vor der Entscheidung stehen, ob diese Architektur für Ihr Projekt sinnvoll ist, oder bereits eine bestehende WordPress-Installation in eine Laravel-Anwendung integrieren möchten: Wir begleiten solche Projekte regelmäßig – von der API-Konzeption bis zur produktionsreifen Umsetzung.