CMSstash

WordPress: Vom kleinen Blog zum großen CMS

WordPress ist derzeit mit einem Marktanteil von über 50 Prozent das marktbeherrschende CMS für Webseiten. Das im Jahr 2003 als Blog-Software gestartete Open-Source-Projekt ist inzwischen zu einem extrem flexiblen und erweiterbaren Content-Management-System gereift. Nicht nur Millionen von Blogs werden mit dem System betrieben, sondern auch unzählige Corporate Websites und ausgereifte Publishing-Projekte etablierter Verlage.

Screenshot der WordPress Startseite

Ein Geheimnis des Erfolges von WordPress: Die Community hat es verstanden, das System sehr flexible zu gestalten und gleichzeitig die Einstiegshürden für Autoren und für Code-Einsteiger extrem niedrig zu halten. Dadurch kann beinahe jeder mit WordPress zumindest irgend etwas auf die Beine stellen. Die berühmte 5-Minuten-Installation ist dafür ebenso ein Symbol wie die über 40.000 Plugins, von den Themes ganz zu schweigen. Heute ähnelt WordPress in vieler Hinsicht einem selbstgehosteten Website-Builder, und mit diesem Konzept ist das System derzeit mehr oder weniger konkurrenzlos.

Die hohe Verbreitung, die Flexibilität und die spezifische Historie von WordPress haben allerdings auch ihre Schattenseiten. Die Qualität des Codes wird häufig kritisiert, immer wieder werden große Sicherheitslücken entdeckt und die eher chaotisch gewachsene Komplexität machen das System anfällig, teilweise inkonsistent und träge. Dennoch kann WordPress angesichts des enormen Erfolges mit seiner Strategie nicht ganz falsch liegen.

WordPress für Content Editoren

WordPress hat eine funktionsreiche, vergleichsweise jedoch nutzerfreundliche Autoren- und Administrations-Oberfläche. Es gibt Buttons für so ziemlich alles, angefangen von der Erstellung simpler Posts bis hin zu einer weitgehenden Individualisierung der WordPress-Installation mit Themes, Plugins, Konfigurationen, Menüs, Widgets und mehr.

Screenshot des WordPress Dashboards

Zu den Standard-Werkzeugen für Autoren zählen eine Medien-Bibliothek, ein mächtiges Kommentar-System und natürlich die üblichen Features wie statische Seiten, dynamische Posts, Entwürfe, Versionierungen, Taxonomien und mehr.

Die Inhalte werden über einen klassischen WYSIWYG-Editor erstellt. Als Blog-System sind standardmäßig Zusatzfelder für Tags und Kategorien vorhanden. Genauso können Header-Images, Meta-Informationen, die berühmten Custom-Fields für individuelle Werte-Paare und einige weitere Zusatz-Felder genutzt werden.

Die Editier-Ansicht kann vom Redakteur bis zu einem gewissen Grad konfiguriert werden, beispielsweise gibt es einen ablenkungsfreien Vollbild-Modus und einzelne Informationen wie Slugs, Diskussionen oder Revisionen lassen sich ein und ausblenden. Und natürlich kann ein Entwickler auch individuelle Felder für zusätzliche Informationen einfügen.

Was WordPress allerdings nicht bietet ist ein Field-Manager, mit dem sich Autoren-Oberflächen grundsätzlich an das Content-Konzept einer Seite anpassen lassen. Bekannt sind solche Oberflächen-Konzepte unter anderem von ExpressionEngine, Craft, Statamic, Grav, Sulu und zahlreichen anderen (vorwiegend jüngeren) Systemen. WordPress erreicht seine Flexibilität dagegen vorwiegend durch flexible Menüs, Widgets und Plugins. Die Menüs und Widgets lassen sich über das User-Interface anpassen und können in vielen Fällen per Drag & Drop positioniert werden. Der Autor (oder Admin) kann so, je nach verwendetem Theme, Navigationen, Artikel-Listen, Tag-Wolken und andere Content-Elemente auf der Seite platzieren.

Widgets sind Teil-Funktionen von Plugins und ihre Darstellung im Frontend ist abhängig von den sogenannten "Widget-Area" eines Themes. Unabhängig davon können Plugins natürlich noch unzählige weitere Funktionen zu einer Seite hinzufügen, die nicht an eine Widget-Area gegunden sind. Diese Funktionen und Inhalte werden dann separat in der Plugin-Konfiguration editiert.

Dieses Konzept einer eher starren Autoren-Oberfläche und der Erweiterung über Widgets und Plugins hat der Flexibilität von WordPress keinen Abbruch getan. Allerdings führt es dazu, dass mehr oder weniger alles, was von der Standard-Ausrichtung einer Default-Installation abweicht, mit Plugins gelöst werden muss. Systeme mit individuellen Field-Managern können dagegen die meisten Anforderungen direkt über eine Individualisierung der Autorenoberfläche abdecken und müssen deutlich seltener auf Plugin-Lösungen zurückgreifen.

Dennoch wird die WordPress-Oberfläche von den meisten Autoren als angenehm empfunden. Geschätzt wird vor allem deren Erweiterbarkeit und Anpassungsfähigkeit ohne Hilfestellung durch einen Entwickler. WordPress hat diese Flexibilität in den letzten Jahren noch mit Features unterstützt, die zunehmend an einen Website-Builder erinnern. Dazu gehört der Theme Customizer, der zahlreiche Einstellungen nochmal im Split-Screen-Modus mit direkter Seitenvorschau und teilweise mit Incontent-Editing ermöglicht. Diese Strategie von WordPress ist sicherlich Geschmackssache, denn das Bearbeitungsfenster des Customizers ist klein, die Navigation umständlich und der Wechsel in die Ansicht ist nicht sonderlich konsistent bzw. wirkt erzwungen. Die Beliebtheit von WordPress scheinen solche Usability-Schwächen allerdings kaum zu schmälern.

WordPress für Entwickler

WordPress startete als PHP-System mit einem prozeduralen Code-Stil. Mit der Zeit ist WordPress zwar in Teilen auf Objekt-Orientierung umgestiegen, im Gegensatz zu vielen anderen Systemen dominiert jedoch bis heute in vielen Bereichen ein eher prozeduraler Stil. Das hat dem CMS viel Kritik eingebracht, allerdings auch die Einstiegshürden für Anfänger niedrig gehalten.

WordPress ist dank der berühmten 5-Minuten-Installation schnell und einfach lauffähig. Man muss lediglich den WordPress-Ordner herunterladen, eine Datenbank erstellen (MySQL oder MariaDB), dann die WordPress-Datei wp-config-sample.php in wp-config.php umbenennen und die Datenbank-Zugänge in die wp-config.php eintragen. Zum Schluss besucht man seine-domain.com und füllt die Formulare für die Installations-Routine aus. Viele Webhoster bieten bei ihren Packeten bereits eine Installation per Knopfdruck an, sodass man sich selbst diese Routine sparen kann.

Vorsicht ist allerdings bei einer Migration von WordPress geboten, zum Beispiel von der lokalen Umgebung in die Live-Umgebung. Denn WordPress speichert zahlreiche Referenzen des Domain-Namens in der Datenbank, was sicherlich eher zu den schmutzigen Details des Systems gehört. In solchen Fällen hilft eine Anleitung für Migrationen.

Ein extrem beliebtes Konzept von WordPress sind die sogenannten Custom-Fields: Autoren können zu jedem Beitrag über Formularfelder individuelle Werte-Paare hinzufügen. Ein Entwickler kann diese Werte-Paare dann sehr einfach abfragen und auf der Seite anzeigen. Die Anwendungszenarien sind vielfältig. Man kann beispielsweise zu jedem Beitrag ein Factsheet mit Wertepaaren wie "Farbe: blau, Alter: 22, Geschlecht: w", etc. erstellen. Die Daten lassen sich nicht nur in den Beiträgen anzeigen, sondern natürlich auch für Vergleichslisten oder Filter nutzen.

Bei der Erstellung von Themes kommt gewöhnliches PHP und HTML zum Einsatz, eine eigene Template-Sprache wie beispielsweise Twig wird nicht verwendet. Auch bei den Themes ist der Code-Stil wieder überwiegend prozedural. Der typische WordPress-Loop sieht wie folgt aus:

<?php if ( have_posts() ) : ?>
    <div class="hfeed">
        <?php while ( have_posts() ) : the_post(); ?>
            <article id="post-<?php the_ID() ?>" class="<?php post_class() ?>">
               <h3><?php the_title(); ?></h3>
            </article>
        <?php endwhile; ?>
    </div>
<?php endif; ?>

Es gibt einen endlosen Katalog an Template-Tags, die ein Entwickler bei der Erstellung eines Themes nutzen kann. Für die Darstellung von Schlagwörtern gibt es beispielsweise nicht nur einen einzigen Template-Tag, sondern gleich ein ganzes Dutzend Tags, wobei die einzelnen Tags semantisch nur schwer zu deuten sind. Würde man ein Objekt oder eben ein Array aus Objekten erwarten, das einheitlich für die Darstellung einer Tag-Liste genutzt werden kann, muss man bei WordPress teilweise doch wieder Funktionen bemühen, um an die gewünschten Infos zu kommen. Beispiel:

$tags = get_tags();
foreach ( $tags as $tag ) {
    $tag_link = get_tag_link( $tag->term_id );
    $html = "<a href='{$tag_link}' title='{$tag->name} Tag' class='{$tag->slug}'>{$tag->name}</a>";
}

Genauso könnte man über ein anderes Template-Tag eine fertige HTML-Liste mit Schlagwörtern ausspucken:

<?php the_tags( '<ul><li>', '</li><li>', '</li></ul>' ); ?>

Einsteiger werden also immer ein passendes Template-Tag finden, mit dem sie ihr Ziel erreichen. Der ein oder andere Entwickler könnte sich über das WirrWarr jedoch grämen.

Plugins werden bei WordPress wie in fast allen Content Management Systemen über ein Event-System realisiert, allerdings ist auch das Event-System von WordPress prozedural aufgebaut. Es läuft bei WordPress unter dem Begriff Hooks, wobei zwischen "Action-Hooks" und "Filter-Hooks" unterschieden wird. Die Arbeit mit einem Event-System im prozeduralen Stil sieht zum Beispiel so aus:

function email_friends($post_ID) {
    $friends = 'bob@example.org,susie@example.org';
    mail($friends, "sally's blog updated", 
      'I just put something on my blog: http://blog.example.com');
    return $post_ID;
}
add_action( 'publish_post', 'email_friends' );

Mit der Funktion add_action wird das Plugin im Event-System registriert, als erstes Argument wird der Event-Name (bzw. Hook-Name) angegeben, anschließend folgt der Name der Plugin-Funktion.

WordPress für Nicht-Entwickler

WordPress hat sich schon immer an den Endnutzer gewendet und einen einfachen Einstieg garantiert. Mit einer schnellen Installation, mit unzähligen Themes und tausenden Plugins kann so gut wie jeder eine eigene WordPress-Seite betreiben und zu einem gewissen Grad individualisieren. Durch die riesige Auswahl und die gewachsene Komplexität kann eine WordPress-Seite in Eigenregie allerdings auch sehr viel Zeit in Anspruch nehmen.

Als Code-Einsteiger kann man über die Verwendung von Template-Tags relativ schnell Erfolge sehen und für so ziemlich jedes Problem irgendwo eine Hilfestellung finden. Allerdings verleitet das recht laxe System von WordPress auch schnell zu einem fahrigen Code-Stil und vermittelt nicht immer die aktuellen Best Practices.

Kosten

WordPress ist Open-Source und komplett kostenfrei. Zusätzlich gibt es natürlich einen riesigen Markt für Plugins, Themes und Dienstleistungen. Viele davon sind ebenfalls kostenlos, andere sind kostenpflichtig, wieder andere folgen dem Freemium-Modell: Man bekommt die Basis-Version kostenlos und zahlt dann für fortgeschrittene Funktionen.

Empfehlung: Wann macht WordPress Sinn?

In der Praxis wird mit WordPress nahezu alles gebaut: Vom simplen One-Pager über Shops bis hin zu kompletten Magazin-Projekten von etablierten Verlagen. Die marktbeherrschende Stellung, die enorme Flexibiltät und das breite Dienstleister-Angebot sind überzeugende Argumente. Hinzu kommt, dass sich viele Anwender und sogar Entwickler kaum mit Alternativen beschäftigen und schon aus Gewohnheit auf WordPress zurückgreifen.

Dennoch kann man den Einsatz von WordPress in vielen Fällen in Frage stellen:

Sinnvoll ist der Einsatz von WordPress bei dynamischen Publishing-Projekten wie Blogs und Magazinen, in vielen Fällen auch bei mittelkomplexen Business-Auftritten. Außerdem bietet WordPress genug Flexibilität, um auf einem vergleichsweise niedrigen Level verschiedene Konzepte auszuprobieren und nach Marktlücken zu suchen. Man kann mit einem Blog starten, im Erfolgsfall (mit viel Arbeit) einen Shop hinzufügen oder es mit einer Community versuchen. Hat man ein tragfähiges Konzept gefunden, kann man immer noch einen Technologie-Wechsel in Erwägung ziehen. Wer allerdings schon ein klares und funktionierendes Konzept hat und sich ohnehin auf Entwicklungs-Kosten einstellt, der dürfte in vielen Fällen mit anderen Systemen besser fahren.

Tägliche CMS-News für Entwickler, Designer, Projektmanager und Anwender gibt es von @CMSstash auf Twitter. Twitter kann auch gerne für Hinweise zu Texten genutzt werden.

Zuletzt aktualisert: 16.03.2018