Include Matomo Wordpress Plugin-Seite

Include Matomo | Entwicklung eines WordPress-Plugins

Ich mag es gerne, immer wieder was neues auszuprobieren. In diesem Fall war die Programmiersprache nicht neu, ich war aber trotzdem daran interessiert, wie man denn ein Plugin für WordPress entwickeln kann. Das möchte ich dir anhand von Include Matomo einmal näher bringen.

Was macht das Plugin?

Für das Tracking auf meiner Webseite nutze ich das Open-Source Tool Matomo. Über einen JavaScript Code-Schnipsel auf der Seite wird dieser Dienst eingebunden. Um dies umzusetzen, habe ich kein speziell dafür ausgelegtes Plugin gefunden. Außerdem wollte ich auswerten können, wie viele Besucher über den RSS Feeds auf meine Seite kommen. Dazu kann man sogenannte Kampagnen anlegen. Das Plugin bindet also Matomo ein und fügt Parameter zu den RSS Links hinzu. Die Sourcen kannst du auf GitHub einsehen: Include Matomo GitHub Repository.

Welche Dateien sind notwendig?

WordPress und die Plugins werden in PHP programmiert. Die aktuell notwendige Version ist 7.2. Um zu starten, muss man unter %WORDPRESS_HOME%/wp-content/plugins/ einen neuen Ordner anlegen. In diesem Ordner kann man nun eine Datei index.php anlegen.

Bei vielen Plugins habe ich gesehen, dass diese leer bleibt. Dies habe ich auch so gemacht und mir erst beim Schreiben dieses Artikel Gedanken darüber gemacht, wieso denn eigentlich. Nach kurzer Recherche wird es gemacht, weil dadurch der Ordnerinhalt bei einem Aufruf verborgen, es wirkt sich aber auch negativ auf die Performance aus und sollte nicht die einzige Sicherheitsmaßnahme sein.

Neben der leeren index.php habe ich also die Datei include-matomo.php angelegt, in die der gesamte Code gewandert ist. Wichtig sind dort nach dem öffnenden PHP-Tag die Kommentar-Zeilen.

Hierher werden unter anderem der Name des Plugins oder die Version und weitere Informationen bezogen.

Informationen in der readme.txt

Wenn das Plugin im WordPress Repository veröffentlicht werden soll, wird auch die readme.txt im Root-Ordner des Plugins wichtig. In dieser werden die Informationen angegeben, die später auf der Webseite des Plugins angezeigt werden. Diese hat ein fest vorgegebenes Format. Hier gibt kannst du nachlesen, wie genau die Datei funktioniert: Wie funktioniert die readme.txt?

Include Matomo - Ausschnitt der readme DAtei

Wie programmiere ich das Plugin?

Funktionen des Plugins ausführen lassen

WordPress bietet viele verschiedene Funktionen man, auf die man ganz einfach zugreifen kann. Zwei wichtige davon habe ich in diesem Beispiel verwendet.

Mit add_action kann ich eine Funktion quasi auf ein Event registrieren.

Ich sorge hier also dafür, dass die Funktion include_matomo_script() ausgeführt wird, wenn der Footer auf der WordPress-Seite zusammengebaut wird.

Zum anderen gibt es die add_filter-Funktion. Mit dieser lassen sich von WordPress angebotene Funktionen abändern.

Hierdurch wird nach dem Aufruf von the_permalink_rss das Ergebnis direkt an add_matomo_campaign_to_rss weitergeleitet und erst dieser Rückgabewert wird an den Aufrufer gegeben. Die Funktion wird also mit dem Filter automatisch immer hinterhergeschaltet.

Erzeugen einer Einstellungsseite

In dem Matomo-Code ist die URL der Installation und die Seiten-ID variabel, weswegen diese konfigurierbar sein müssen. Dazu kann man relativ einfach eine solche Seite für das Plugin bauen.

Dafür benötigt man zuerst einmal eine Funktion, die den Inhalt der Seite ausgibt, in meinem Fall include_matomo_settings_page. Diese Seite bindet man dann folgendermaßen in das WordPress Menü ein.

Es wird unter options-general.php, also dem Menüeintrag ‚Einstellungen‘ ein weiteres Sub-Menü erzeugt. Der letzte Parameter von add_submenue gibt an, welche Funktion den Seiteninhalt liefert. add_action funktioniert hier wie schon oben beschrieben, nur dieses Mal an anderer Stelle, und zwar dann, wenn das Admin-Menü gebaut wird.

Include Matomo Menüeintrag

Abspeichern der Eingaben

Es reicht nun nicht, diese Seite nur anzuzeigen, die Eingaben müssen auch gespeichert werden. Dazu müssen die notwendigen Optionen registriert werden. In diesem Fall werden alle Optionen der gleichen übergeordneten Gruppe zugeordnet, die man frei benennen kann.

Auf der Einstellungensseite lädt man diese Optionengruppe dann:

Anschließend kann man bei den Eingabefeldern über get_option auf den Wert zugreifen.

Der Button zum Speichern wird ganz einfach mithilfe der Funktion submit_button erzeugt.

Include Matomo Einstellungsseite

Wie kann ich das Plugin veröffentlichen?

An dieser Stelle ist das Plugin fertig und bereit zur Veröffentlichung. Zuallererst sollte die readme.txt Datei noch einmal validiert werden: ReadMe Validator. Anschließend kann man das Plugin hochladen: WordPress Plugin hinzufügen. Es wird eine manuelle Prüfung seitens WordPress durchgeführt. Über das Ergebnis wird man via Mail informiert und wenn alles in Ordnung war, wird ein leeres Repository angelegt, zu dem man ebenfalls per Mail die Zugangsdaten erhält.

Die Plugin-Repositorys funktionieren mit der Versionsverwaltungssoftware Subversion. Eine kurze Anleitung dazu gibt es hier: Anleitung zu SVN. Nach einem Commit ist das Plugin erfolgreich veröffentlicht.

Updates für das Plugin

Will man eine neue Version für das Plugin veröffentlichen, muss man lediglich die gewünschten Änderungen in der lokalen Arbeitskopie umsetzen, die Versionsnummer hochzählen und ein Commit in das Plugin-Repository absetzen. Die neue Version ist dann unmittelbar verfügbar.

Hinweis: Auch auf der Seite von wordpress.org wird darauf hingewiesen, dass man regelmäßige Commits nicht in diesem Repository machen sollte. Ich habe deswegen für die Entwicklung ein Github-Repository erstellt. Ist eine neue Version fertig, übertrage ich die Sourcen dann in das WordPress-SVN-Repo.

Fazit

Das war es im Grunde auch schon. Ich finde, dass es relativ einfach war, mit grundlegenden PHP-Kenntnissen und ein wenig Internet-Recherche ein Plugin für WordPress zu entwickeln und zu veröffentlichen. Hast du schon Mal ein Plugin entwickelt oder hast es dir nach Lesen dieses Beitrags vorgenommen? Schreib es gerne in die Kommentare!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.