Corcel 1×1: WordPress und Laravel einfach verbinden

Wer oder was ist Corcel?

WordPress ist immer noch ungeschlagene Nummer Eins unter den Content Management Systemen. Jeder Web-Developer kommt früher oder später damit in irgendeiner Weise in Kontakt. Dabei spalten sich die Lager, die einen lieben WordPress, die anderen hassen es!

Ich selbst entwickle bereits seit vielen Jahren für WordPress und bin an die Welt der WordPress-Funktionen gewöhnt. Zu meiner Schande muss ich gestehen dass ich erst vor relativ kurzer Zeit angefangen habe, mich mit Laravel zu beschäftigen. Und doch hat diese kurze Zeit gereicht, mich vollkommen dafür zu begeistern. Mein Code ist so viel einfacher und klarer geworden, und das Entwickeln mit Laravel macht wahnsinnig viel Spaß.

Zum vollkommenen Glück hat mir nur noch eins gefehlt, das Verbindungsstück zwischen den beiden Welten von WordPress und Laravel. Sehr zu meiner Freude hat sich bereits jemand viele Gedanken zum Thema gemacht, und heraus kam eine feine Sammlung namens CORCEL.

Corcel PHP

Was macht Corcel so besonders praktisch?

Corcel wurde entwickelt um einfach und effizient Daten von der WordPresss-Datenbank abzufragen und zu bearbeiten. Hierbei wird nicht erst der Umweg über die WordPress REST API gegangen, sondern direkt auf die Datenbank zugegriffen.

Download

Installation

Was brauchen wir um Corcel zu verwenden? Zuallererst lediglich eine WordPress-Installation, und außerdem das Gerüst unseres PHP-Frameworks, vorzugsweise natürlich Laravel. Dort können wir mit Hilfe von Composer das Paket installieren.

composer require jgrossi/corcel

Mit Hilfe von Corcel können wir elegant im MVC-Pattern entwickeln, so wie wir es von Laravel kennen. Es besteht sogar die Möglichkeit, mehrere Datenbankverbindungen zu verwenden, eine für WordPress und eine andere für unsere Laravel-App, wenn wir das möchten.

Code-Beispiel

Hier noch ein kurzer Einblick in die wunderbare, simple Welt von diesem Paket:

public function index()
{
    $posts = Post::published()->take(10)->get();
    $page = Page::where('post_name', 'about')->first();

    return view('posts.index', compact('posts', 'page'));
}

Unterstützte WordPress-Datentypen

Unser neuer Helfer unterstützt aber noch viele weitere WordPress-Datentypen:

  • Custom Post Types
  • Custom Meta Fields (z.B. ACF)
  • Taxonomien
  • Optionen
  • User

Meta-Daten manipulieren

Auch auf Meta-Daten kann man in gewohnt lässiger Laravel-Art zugreifen und diese auch direkt bearbeiten.

$post = Post::find(5);
echo $post->meta->link; // OR
echo $post->fields->link;
echo $post->link; // OR

Dies erleichtert natürlich auch die Abfrage nach bestimmten Posts anhand dessen Meta-Daten:

// Find a published post which matches both meta_key and meta_value.
$post = Post::published()->hasMeta('username', 'wpcraft')->first();

Custom Post Types

Auch die Arbeit mit CPT geht um einiges effizienter von der Hand. Entweder benutzt man die Post-Klasse zusammen mit der type() Methode oder man erweitert gleich die Klasse und kann sie anschließend direkt als Modell verwenden.

// using type() method
$videos = Post::type('video')->status('publish')->get();

// using your own class
class Video extends Corcel\Post
{
    protected $postType = 'video';
}
$videos = Video::status('publish')->get();

Taxonomien

Ihr habt es euch bestimmt schon gedacht, auch Taxonomien lassen sich unglaublich einfach abfragen. Auch hierzu finden wir auf der GitHub-Seite ein kleines Code-Beispiel:

$post = Post::find(1);
$taxonomy = $post->taxonomies()->first();
echo $taxonomy->taxonomy;

Oder man nutzt die Taxonomie um die ihr zugeordneten Posts zu finden (in diesem Beispiel den dersten):

$post = Post::taxonomy('category', 'php')->first();

Optionen

Mit Hilfe der Option Klasse können wir Daten aus der wp_options Tabelle abfragen, verändern, und sogar neu anlegen.

$siteUrl = Option::get('siteurl');

Option::add('foo', 'bar');

Benutzer

Hier noch ein kleines Beispiel dazu, wie man mit der User Klasse arbeiten kann:

// All users
$users = User::get();

// A specific user
$user = User::find(1);
echo $user->user_login;

Erweiterungen

Auf GitHub finden man vom selben Author bereits Erweiterungen für das Paket:

Fortsetzung folgt…

Nach dieser kleinen Aussicht auf Corcel hoffe ich dass ihr Lust auf mehr bekommen habt und in Zukunft hier vorbeischaut um mehr über darüber zu erfahren.

Hat euch dieser Artikel gefallen? Dann hinterlasst mir gerne einen Kommentar, ich freue mich auf euer Feedback!


Leave a Comment

Consent management by Real Cookie Banner