Month: May 2015

WordPress Alternative zu Google Analytics: Statify

Nach wie vor ist Google Analytics der Platzhirsch wenn es um Webstatistiken geht. Doch es gibt eine Vielzahl von Gründen, warum jemand Analytics nicht mehr nutzen möchte. Datenschutz ist nur einer von vielen. Zahlreiche Alternativen buhlen um die Aufmerksamkeit der Administratoren. Ich möchte Euch heute eine vorstellen: Das WordPress Plugin Statify von Sergej Müller.

Gerade wenn Ihr Euch um den Datenschutz Eurer Besucher sorgt solltet Ihr einen Blick auf dieses kleine Plugin werfen, welches eine transparente Lösung liefert und die Besucherdaten vor allem nicht an Dritte weitergibt. Darüber hinaus verwendet Statisfy weder Cookies noch zeichnet es die IP Adresse der Besucher auf, um diese nachzuverfolgen:

Im direkten Vergleich mit Webstatistik-Diensten wie Google Analytics, WordPress.com Stats oder Piwik speichert Statify weder perfönliche Daten wie IP Adressen noch werden diese weiterverarbeitet – Statify zählt Seitenbesuche, nicht Besucher

Darüber hinaus kann man selbst bestimmen, wie lange die Daten in der zusätzlichen Datenbank gespeichert werden sollen, welche mit nur vier Spalten ziemlich übersichtlich daher kommt.

Obwohl das Plugin also sehr übersichtlich gestaltet ist, erhält man trotzdem was man möchte; Eine saubere und schöne Übersicht über die Besucher:

Besucher Statistik mit Statify
Besucher Statistik mit Statify

Statisfy läuft derzeit auf über 20,000 Webseiten und erhält fast durchgehend gute Rezensionen, wie diese, welche die Hauptvorteile des Plugins hervorhebt:

Die Stärke von Statify liegt in seiner Einfachheit. Man hat es mit zwei Mausklicks eingerichtet und erhält ein kleines Widget im Dashboard, welches eine Statistik des letzten Webtraffics enthält, die Referrer sowie die aktivsten Seiten anzeigt – gerade genug Daten um ein bißchen Feedback über die Popularität der eigenen Seite zu erhalten. Da diese Informationen nicht mit einer dritten Partei geteilt werden genügt das Plugin damit auch den deutschen Gesetzen des Datenschutzes.

Ein weiterer Vorteil des Plugins liegt in dem sehr guten Support den Sergej Müller meistens anbieten kann. Ich selbst hatte gesehen wie er ein kleines Problem auf Google+ innerhalb weniger Minuten löste und das entsprechende Patch in das WordPress Repository einspielte. Kriegt man einen solchen Service bei GA? Ich zumindest habe heute gewechselt. Wie steht es mit Dir?

Daten temporär ablegen mit der Transient API

Umfangreiche Datenbankabfragen oder aber auch das Beziehen von Daten von einer dritten Quelle kann durchaus die Ladezeit einer Seite verlangsamen und vor allem den Server belasten. Um diese Belastungen zu vermindern gibt es in WordPress die Transients API, welche Daten temporär abspeichert. So werden die umfangreichen Abfragen nicht mit jedem Page Load neu initialisiert, sondern immer erst nach einer gewissen Weile aktualisiert und dann in der Datenbank abgelegt.

In diesem Blogpost möchte ich die Funktionsweise der Transients API näher erläutern. In einem ersten Schritt fragt man ab, ob bestimmte Daten aktuell in der Datenbank abgelegt sind. Sollte dies der Fall sein, so werden diese Daten genommen. Sollten die Daten allerdings nicht existieren, beziehungsweise veraltet sein, so wird die eigentliche Abfrage zur Gewinnung dieser Daten ausgeführt und diese schließlich als Transient in der Datenbank abgelegt. Mit dem nächsten Page Load werden die Daten somit vorhanden sein und schneller bereit stehen.

Um die Transient API zu nutzen sieht der grundlegende Aufbau wie folgt aus:

Mit get_transient() erhalten wir die Daten, welche unter einem bestimmten Namen gespeichert werden. Diesen legen wir in einer Variablen ab. Sollten die Daten noch nicht vorhanden oder aber veraltet sein wird diese Variable false sein. In diesem Fall führen wir nun unseren langwierigen Code aus um an dessen Ende das gewünschte Ergebnis zu erhalten. Bevor wir dieses jedoch ausgeben speichern wir das Ergebnis zunächst mit Hilfe von set_transient() ab. Diese Funktion erwartet dabei drei Parameter:

  1. Den Namen des Transient
  2. Den Wert, welcher hinterlegt werden soll
  3. Ein Sekundenangabe, nach welchem der Transient nicht mehr gültig ist

Mit Hilfe dieses einfachen Vorgangs können wir komplexe Abfragen begrenzen und nur nach bestimmten zeitlichen Intervallen ausführen. Der abgespeicherte Wert kann dabei alles mögliche sein, ein String, ein Integer, ein Array oder auch ein Objekt. Sollte der Wert serialisiert werden müssen, so übernimmt WordPress diese Aufgabe.

WordPress bietet für die Angabe des Zeitrahmens, in welchem Daten valide sind eine kleine Unterstützung in Form von Konstanten. In unserem Beispiel läuft der Transient nach zwölf Stunden ab, indem wir angeben

12 * HOUR_IN_SECONDS

Weitere Konstanten sind:

MINUTE_IN_SECONDS  = 60 (seconds)
HOUR_IN_SECONDS    = 60 * MINUTE_IN_SECONDS
DAY_IN_SECONDS     = 24 * HOUR_IN_SECONDS
WEEK_IN_SECONDS    = 7 * DAY_IN_SECONDS
YEAR_IN_SECONDS    = 365 * DAY_IN_SECONDS

Mit Hilfe von delete_transient( ‘transient-name’ ) können wir einen Transient wieder löschen.

Photo Credit: Storage Lockers (Lizenz)

WordPress 4.3: Der Admin wird mobiler

Am 18. August soll WordPress 4.3 veröffentlicht werden. Im Fokus steht dabei die Usability des WordPress Admins auf kleinen Screens. So wird der Editor überarbeitet, die Installationsroutine und einige andere Bereiche, welche dringend überarbeitet werden müssen, wenn der Admin auch auf kleinen Smartphones und ähnlichem gut dargestellt werden soll.

Von jetzt an gibt es eine zweimonatige Phase, in welcher Feature Requests gestellt werden können. Am ersten Juli soll dann die erste Betaversion erscheinen, welche dann von jedem getestet werden kann. Dies bedeutet auch, dass danach keine Feature requests mehr in das Release aufgenommen werden sondern es vornehmlich nur noch um Bugfixes gehen wird.

Konstantin Obenland
Konstantin Obenland koordiniert das WordPress-Release 4.3

Die Version 4.3 wird von Konstantin Obenland (WP Profil, Twitter) koordiniert, welcher in seinem Kickoff Post schon einige der geplanten Features vorstellt. Obenland war unter anderem für das neue WordPress Theme Directory verantworlich Die Release Koordinatoren setzen die Parameter eines Release wie die verschiedenen Deadlines und helfen in den Entscheidungen welche Features es in das Release schaffen. Allgemeiner, so Andrew Nancin im entsprechenden Blogbeitrag bestimmen sie über den Umfang und den Fokus einer neuen Version. Vor allem leiten sie die Diskussionen in den Core Development Chats und verfassen die verschiedenen Bekanntgaben im WordPress Core Blog.

Die rotierenden Koordinatoren wurden in WordPress 3.5 eingeführt. Bisher wurden die Koordinatoren relativ spät im gesamten Prozess benannt. Mit der Version 4.3 und 4.4 wurde dies allerdings geändert und die beiden Koordinatoren sehr früh benannt. Dies soll einen besser strukturierten Entwicklungsprozess gewährleisten und ermöglicht einen sanfteren Übergang von einem zum anderen Koordinator.

Zusätzliche Links auf der Plugin Übersichtsseite unterbringen

Ihr kennt ja die übliche Plugin Übersichtsseite, auf welcher man eine kurze Beschreibung des Plugins, die Version, den Autoren, einen Link auf die Pluginseite und so weiter enthält. Auf der linken Seite befinden sich dabei der Aktivierungslink, beziehungsweise der Deaktivierungs- und Bearbeitenlink. Immer mal wieder sieht man allerdings Plugins, welche hier noch einen Einstellungslink oder ähnliches unterbringen.

Manchmal macht es keinen großen Sinn für ein Plugin einen extra Menüpunkt im Admin anzulegen. Die Funktion des Plugins ist so beschränkt, dass es eigentlich nicht im Menü erscheinen, sondern einfach nur laufen sollte. Wenn allerdings dennoch Einstellungen vorgenommen werden können ist ein solcher zusätzlicher Link auf der Plugin-Seite natürlich sehr interessant.

Also habe ich mich auf die Suche gemacht, wie ein solcher Link von einem Plugin erzeugt werden kann. Dazu dient der Filter “plugin_action_links“. Dieser Filter enthält sämtliche Action Links, welche in der Plugin Übersicht angezeigt werden sollen, als Array. Da diese bei jedem Plugin andere sind, muss der Filter korrekt auf das eigene Plugin angepasst werden. Dazu wird der Filtername um den Basenamen des Plugins erweitert:

add_filter( 'plugin_action_links_' . plugin_basename(__FILE__), 'function_to_execute' );

An den Filter wird also ein Array von Links übergeben. Diesen Array kann man nun beliebig erweitern und daraufhin zurückgeben. In meinem Beispielcode hänge ich beispielsweise einen Link auf meine Webseite an:

Doch: Wie erstellt man im Admin eigentlich eine Seite, welche nicht im Menü erscheint? Dazu kann man über add_submenu_page() gehen, wobei man den Slug des Elternmenüs mit dem Wert ‘null’ angibt:

add_submenu_page( null, 'Titel', 'Titel', 'manage_options', 'unsichtbar', 'render_function' );

Diese Seite erreicht man im Admin beispielsweise mit wp-admin/?page=unsichtbar, indem man also einfach den GET-Parameter page mit dem Pageslug angibt.