Aber fangen wir von vorne an.

Ganz am Anfang

Irgendwann in meiner Zeit bei Scout24 – es dürfte so um 2018 gewesen sein – stand ich vor einem Problem. Einige Websites in der WordPress-Multisite-Umgebung der Verticals sollten in den Suchindex von Google und Co. und dort auch performen. Alle verfügbaren SEO-Plugins zu der Zeit waren aber zu umfangreich und nicht für schnelle Ladezeiten optimiert, sie durchzogen den Quellcode mit Kommentaren – alles Dinge, welche ich nicht haben wollte oder gut heissen konnte.

Also schrieb ich selbst eines. Die erste Version war denkbar einfach: ein Meta-Description-Feld pro Beitrag und Seite, die Aktivierung von Open Graph im Header der Seite, eine generelle Meta-Beschreibung, ein generelles Teilen-Bild als Fallback, ein Feld für Google Analytics und internes IP-Blocking. Das war es. Eigentlich ganz einfach. Zumindest wenn man weiss, was man macht.

In den folgenden Versionen wuchs das Plugin in kleinen Schritten. Ein Plugin Update Checker kam dazu, damit selbst gehostete Updates direkt über das WordPress-Dashboard eingespielt werden konnten. Eine Nutzerrollenprüfung, verfeinerte deutsche Übersetzungen, ein überarbeitetes Admin-Interface, mehr Titeltrenner, verbesserte Sicherheit und schliesslich Google Tag Manager als zweite Tracking-Option neben Analytics. Mit Version 1.0.7 stand dann ein solider, schlanker Stand. Und genau so blieb es dann für einige Jahre.

Der grosse Rewrite

Jahre vergingen. WordPress entwickelte sich weiter, PHP entwickelte sich weiter – und das Plugin blieb stehen. Ich wechselte den Job und arbeitete gar nicht mehr damit für eine Zeit. Und wie es dann manchmal so ist, kam ich beim Aufbau meines Blogs wieder auf dieses gute, alte Plugin zurück.

Eins war jedoch klar: Es braucht einen Rewrite. Mit Version 1.1.0 wurde alles konsequent ausgemistet. Das Keywords-Meta-Tag wurde entfernt – Google ignoriert es seit 2009. Ebenfalls wurde die Robots-Meta-Verwaltung entfernt – WordPress bringt seit Version 5.7 eine eigene API dafür mit. Dass eine gezielte Noindex-Option pro Beitrag trotzdem irgendwann wieder gebraucht werden würde, zeigt Version 1.2.0. Die Mobile_Detect-Bibliothek – einst dafür zuständig, Geräteinformationen wie Mobile, Desktop oder Browser an Analytics weiterzugeben – wurde ebenfalls entfernt. Das übernimmt Analytics heute selbst.

Neu kam ein einziges, freies Skript-Textfeld herein: wer seinen GA4- oder GTM-Snippet dort einfügt, bekommt Preconnect-Hints für Google-Domains und den GTM-Noscript-Fallback im Footer automatisch dazu. Keine separaten ID-Felder mehr, kein Ratespiel, welche Syntax das Plugin genau erwartet – einfach den Snippet reinkopieren, fertig. Der Update Checker wechselte von einer selbst gehosteten Quelle auf GitHub, und die Meta Description bekam eine Fallback-Logik: zuerst das Post-Excerpt, dann der globale Standardwert.

Version 1.1.1 erweiterte das auf Kategorie-, Tag- und Custom-Taxonomy-Seiten: wenn dort eine Beschreibung gesetzt ist, wird sie als Meta Description verwendet.

Danach folgten einige Korrekturen, die zwar unspektakulär klingen, aber wesentlich waren. Version 1.1.2 behob zwei PHP-8.5-Fehler und bestätigte die Kompatibilität mit WordPress 7.0. Version 1.1.3 behob ein Problem, das seit dem Wechsel auf GitHub unbemerkt geblieben war: automatische Plugin-Updates über GitHub hatten schlicht und einfach nie funktioniert. Die Ursache war eine falsch konfigurierte ZIP-Quelle im Update Checker – WordPress konnte die automatisch generierte Source-ZIP von GitHub nicht korrekt installieren. Behoben, und ab da lief es.

Mit 1.1.5 kamen Banner und Screenshots für das Plugin-Details-Popup dazu – und damit begann eine kleine Odyssee, die drei weitere Versionen beschäftigte. Das grundlegende Problem: WordPress.org verarbeitet Screenshots serverseitig und bettet die Bilder selbst ein. Der Plugin Update Checker (PUC) hat diese Infrastruktur nicht. Version 1.1.7 versuchte es mit direkten <img>-Tags, 1.1.8 mit <a>-Tags – beide wurden von WordPress schlicht gestripped, der Tab blieb leer. Mit 1.1.9 landete ich bei Plain-Text-URLs, die PUC automatisch in klickbare Links umwandelt. Keine eingebetteten Bilder, aber zumindest funktionale Links, die direkt zu den Screenshots auf GitHub führen. Mehr ist ohne WordPress.org-Infrastruktur schlicht nicht möglich.

Mit Version 1.2.0 ist eine Noindex-Option direkt im Editor hinzugekommen: Beiträge und Seiten können damit einzeln als noindex markiert werden und werden somit automatisch aus der WordPress-Sitemap ausgeschlossen. Inklusive deutscher Übersetzung für de_DE und de_CH. Version 1.2.1 entfernte die Polylang-Integration wieder, da ich sie selbst nicht mehr einsetze und sie entsprechend auch nicht weiter pflegen will.

Ich verwende das Plugin selbst auf meinem Blog und entwickle es, wenn nötig oder sinnvoll, weiter. Einen festen Plan dazu gibt es jedoch nicht.

Update – Version 1.2.2 (05.06.2026): Das Meta-Beschreibungsfeld zeigt jetzt einen Live-Zeichenzähler an, der direkt beim Tippen Rückmeldung gibt. Die deutschen Übersetzungen wurden auf die Du-Form umgestellt. Ausserdem wird das Zeichenlimit nun korrekt multibyte-sicher berechnet – Umlaute zählen jetzt als ein Zeichen. Ebenfalls behoben: ein Fehler, der Sonderzeichen wie & oder Anführungszeichen in Beschreibungen doppelt kodierte.

Update – Version 1.3.0 (22.06.2026): Bisher hat das Plugin als Open-Graph-Bild die WordPress-Bildgrösse «large» des Beitragsbildes verwendet – im Originalformat des Bildes und im Mass, das in den WordPress-Medieneinstellungen festgelegt ist. Das konnte dazu führen, dass ein schweres PNG als Vorschaubild verwendet wurde und Dienste wie WhatsApp die Vorschau stillschweigend gar nicht anzeigten. Neu erzeugt Essential SEO für jeden Beitrag und jede Seite mit Beitragsbild automatisch ein korrekt dimensioniertes 1200×630-JPEG – unabhängig vom Originalformat und von den WordPress-Medieneinstellungen. Die Bilder werden beim ersten Aufruf einer Seite oder eines Beitrags generiert. Sobald du das Beitragsbild änderst oder entfernst, wird das OG-Bild automatisch angepasst. Sie liegen in einem eigenen Upload-Ordner und sind bewusst nicht in der Medienbibliothek zu finden, damit sie nicht versehentlich gelöscht werden können. Über einen neuen Button in den Einstellungen des Plugins lassen sich die Bilder für alle bestehenden Beiträge per Klick manuell generieren. Bei der Deinstallation des Plugins werden neben allen Einstellungen neu auch die generierten OG-Bilder bereinigt.

Update – Version 1.4.0 (30.06.2026): Wer Google Analytics (oder andere Tracking-Tools) nutzt, kennt das Problem: Die eigenen Besuche verfälschen die Statistik – gerade beim Schreiben und Kontrollieren ruft man die eigenen Seiten als eingeloggter Benutzer ständig auf. GA4 bietet dafür zwar (wie andere Tools auch) Filter über die IP-Adresse an, die sind aber umständlich einzurichten und greifen bei einer wechselnden Heim-IP schlicht nicht zuverlässig. Neu gibt es in den Plugin-Einstellungen darum eine einfache Option: Ist sie aktiv, wird der Tracking-Code für angemeldete Benutzer mit Bearbeitungsrechten – Administratoren, Redakteure, Autoren und Mitarbeiter – gar nicht erst ausgegeben. Kein Hit landet bei GA4 (oder anderen Tracking-Tools), unabhängig von der IP. Das betrifft sowohl das Snippet im Head als auch den GTM-Noscript-Fallback im Footer (Letzterer kommt nur bei GTM zum Einsatz). Für alle ausgeloggten Besucher läuft das Tracking normal weiter. Die Option ist standardmässig deaktiviert – an bestehenden Installationen ändert sich also nichts, bis du sie bewusst einschaltest.

Screenshots

Hier kannst du es gratis herunterladen

Essential SEO ist kostenlos auf GitHub verfügbar. Das aktuelle Release sowie die gesamte Versionsgeschichte findest du unter github.com/marcelbest/essential-seo – dort kannst du auch das ZIP für die Installation herunterladen.

Fragen, Feedback oder Fehler kannst du direkt als Issue auf GitHub melden. Das Plugin ist unter der GPLv2 lizenziert – du kannst es verwenden, anpassen und weitergeben.

Einige Worte zur Installation

Die Installation ist bewusst einfach gehalten – vorausgesetzt, man weiss, wie man in WordPress ein Plugin manuell via ZIP hochlädt und aktiviert.

Man lädt dazu das ZIP herunter, lädt es in WordPress hoch – über Plugins > Neu hinzufügen > Plugin hochladen –, aktiviert es und konfiguriert die Grundeinstellungen unter Einstellungen > Essential SEO. Fertig.

Es gibt keine Abhängigkeiten, keine Lizenzschlüssel, kein Konto irgendwo.

Einmal installiert, prüft das Plugin selbstständig auf Updates über GitHub. Neue Versionen erscheinen dann ganz normal im WordPress-Dashboard unter den Plugin-Updates – kein manuelles Herunterladen mehr nötig.

FAQ

Die Installation setzt grundlegende WordPress-Kenntnisse voraus. Wer weiss, wie man ein Plugin via ZIP hochlädt und aktiviert, ist gut aufgestellt. Grosse Konfiguration gibt es nicht – ein paar Felder ausfüllen und fertig.

Für das Teilen-Bild gilt: es muss ein absoluter Pfad angegeben werden, und die empfohlene Bildgrösse liegt bei 1200×630 Pixel.

Ja – sobald das Plugin installiert ist, prüft es selbstständig auf neue Versionen über GitHub. Updates erscheinen dann ganz normal im WordPress-Dashboard. Wer möchte, kann dort auch automatische Updates für das Plugin direkt einschalten.

Ja, ohne Einschränkungen. Es gibt keine Lizenz, die die Anzahl der Installationen begrenzt. Wenn dir das Plugin nützlich ist, freue ich mich über einen Kaffee auf Ko-fi.