Linux und Ich

Blog über Ubuntu, Linux, Android und IT

piwik-wordpress

Beim Veröffentlichen von WordPress-Posts eine Anmerkung in Piwik setzen

| 7 Kommentare

Seit der Version 1.10 lassen sich im freien Webanalytik-Tool Piwik Anmerkungen in der Zeitleiste setzen. So kann man zum Beispiel vermerken, dass man diese und jede Änderung an der Page gemacht hat und so später einmal nachvollziehen, was diese am Ende nun eigentlich gebracht hat. Als Blogger würde ich an dieser Stelle gerne nicht nur technische Änderungen abspeichern, sondern auch das Veröffentlichen einzelner Beiträge. Mit dem Piwik FeedAnnotation Plugin gibt es dafür eigentlich schon eine wunderbar einfache und flexible Lösung (da sie den RSS-Feed für Anmerkungen nutzt, funktioniert sie mit praktisch allen Publishing-Lösungen), doch das Plugin ist schon eine ganze Weile defekt, es arbeitet nicht mit Piwik 2.1 zusammen. Von daher habe ich mir eine eigene Lösung für WordPress gebaut, viel aufwändiger ist sie eigentlich auch nicht.

Die Annotations bzw. Anmerkungen in Piwik lassen sich nicht nur manuell über das Web-Frontend setzen, sondern auch automatisiert über die Annotations-API von Piwik. Kombiniert man das Öffnen einer Webseite nach dem Veröffentlichen eines Beitrags mit cURL, die bei Amirshk gefundenen Infos (leider konnte ich seine Lösung bei mir nicht mehr zum Laufen bekommen) und das Format des Aufrufs der Annotations-API, dann hat man eigentlich relativ schnell den entsprechenden Code-Schnippsel zusammengebaut.

// Beim Veroeffentlichen Piwik-Anmerkung setzen
function piwik_annotation($post_id) {

	// Hier bitte die Piwik-Daten eintragen...
	$apikey = b8fe6370f3f05ded9301eea133cd55da;
	$id = 1;
	$piwikurl = "http://piwik.linuxandi.net/";

	// Ab hier bitte nichts mehr aendern...
	$title = get_post($post_id)->post_title;
	$note = urlencode("Published: $title");
	$date = date("Y-m-d");
	$apiurl = $piwikurl.'?module=API&method=Annotations.add&idSite='.$id.'&date='.$date.'&note='.$note.'&token_auth='.$apikey;

	$curl = curl_init();
	curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($curl, CURLOPT_URL, $apiurl);
	$results = json_decode(curl_exec($curl));
	curl_close($curl);
}

function wpse8170_transition_post_status( $new_status, $old_status, $post ) {
    if ( $new_status == 'publish' && $old_status != 'publish' ) {
	add_action( 'publish_post', 'piwik_annotation' );
    }
}

add_action( 'transition_post_status', 'wpse8170_transition_post_status', 10, 3 );

Das Ganze müsst ihr in die functions.php eures WordPress-Templates übertragen und anschließend noch die Variablen “$apikey”, “$id” und natürlich “$piwikurl” anpassen . Die entsprechenden Daten findet ihr in den Piwik-Einstellungen unter “Verwalten -> Webseiten” und “Verwalten -> Benutzer”. Aus Sicherheitsgründen würde ich für den API-Aufruf einen eigenen Benutzer erstellen, der keine Admin-Rechte auf eurer Piwik-Installation besitzt.

Wordpress setzt nun automatisch beim Veröffentlichen eines neuen Beitrags eine Anmerkung in Piwik.

WordPress setzt nun automatisch beim Veröffentlichen eines neuen Beitrags eine Anmerkung in Piwik.

Sobald ihr nun einen neuen Beitrag veröffentlicht, schreibt WordPress die entsprechende Anmerkung ins Piwik-Protokoll. Beachtet aber bitte, das WordPress beim Funktionsaufruf publish_post nicht zwischen dem erstmaligen Veröffentlichen eines neuen Beitrags und dem Überarbeiten eines bereits gespeicherten und veröffentlichten Beitrags unterscheidet. Korrigiert ihr also einen kleinen Rechtschreibfehler in einem älteren Posting, dann setzt die Funktion auch gleich wieder eine Anmerkung, dass dieser Beitrag heute neu veröffentlicht wurde.

[UPDATE 28.03.2014: Ich habe den Code-Schnippsel dahingehend überarbeitet, dass vor dem Veröffentlichen des Beitrags geprüft wird, ob dieser schon veröffentlicht war oder ob er gerade neu freigeschaltet wird. So könnt ihr also jetzt Beiträge überarbeiten, ohne dass WordPress gleich wieder eine neue Anmerkung in Piwik setzt.

Von daher wäre es trotz meiner kleinen Funktion besser, wenn das Piwik FeedAnnotation Plugin fit für Piwik 2.1 werden würde. So muss man keine API-Keys durch die Welt schicken, hat immer die letzten X Beiträge als Anmerkung in Piwik und beim Überarbeiten eines älteren Eintrags ändert sich trotzdem der Feed nicht, von daher entstehen auch keine ungewollten Einträge beim Ändern kleinerer Fehler im Blog.]

[UPDATE 29.04.2014: André hat meinen kleinen Codeschnippsel in die Version 0.9.9.9 des WP-Piwik-Moduls eingebaut. Dadurch fällt die Bastellösung als Funktion für die functions.php flach. Um die Anmerkungen nicht doppelt zu erstellen sollte man daher die manuelle Ergänzung entfernen und auf die ordentliche Implementation in das Plugin von André setzen. @André: Tausend Dank für die schnelle Umsetzung!]

Autor: Christoph

Hallo, ich bin Christoph -- Linux-User, Blogger und pragmatischer Fan freier Software. Wie Ihr ohne Zweifel bemerkt haben solltet schreibe ich hier über Linux im Allgemeinen, Ubuntu im Speziellen, sowie Android und andere Internet-Themen. Wenn du Freude an meinen Artikel gefunden haben solltest, dann kannst du mir über Facebook, Google+ oder Twitter oder natürlich dem Blog folgen.

7 Kommentare

  1. Hey. Was hälst du von diesen Eintrag: http://wordpress.stackexchange.com/a/88335. Wäre das vielleicht eine Problemlösung für publish und update post?

  2. Off-Topic, nur mal so aus Interesse, da du dich offensichtlich schon tiefer mit Piwik beschäftigt hast.

    Wie gehst du eigentlich mit der im Folgenden beschriebenen Problematik um? Golem: “Urteil zu Tracking: Nutzer müssen Piwik-Analyse widersprechen können “:
    http://www.golem.de/news/urteil-zu-tracking-nutzer-muessen-piwik-analyse-widersprechen-koennen-1403-105055.html

    Ich will z.B. schon lange von Google Analytics weg. Aber es ist paradox. Obwohl Piwik eigentlich den real viel besseren Datenschutz bietet da kein Dritter die Daten erhält kann ich derzeit eigentlich nur Google Analytics halbwegs rechtssicher betreiben (wenn man mal von der Möglichkeit gar nichts zu loggen absieht – bei APIs etc. mache ich dies so, bei redaktionellen Angeboten ist das aber halt keine sinnvolle Option).

    Es muss halt die Datenschutzerklärung stimmen und der Vertrag zur Auftragsdatenverarbeitung ordentlich abgeschlossen werden (auf beides achte ich stets peinlich genau). Aber nur bei GA scheint ein als praktikabel angesehenes, globales Opt-Out möglich zu sein (z.B. via AddOn), das den aktuell rechtlichen Ansprüchen noch genügt.

    Hast du dich mit der Thematik zufällig schon auseinandersetzt?

    • Nachtrag: IP-Anonymisierung ist natürlich auch aktiviert (was ja sowohl bei GA als auch Piwik notwendig und sinnvoll ist).

    • Hi Andreas, in meiner Datenschutzerklärung ist der Opt-Out enthalten, den Piwik anbietet. Aber ich glaube, dass ich da durchaus nochmal nachbessern sollte.

      • Ok, Danke für die kurze Rückmeldung. Dann heißt es doch mal mit dem Anwalt Rücksprache halten etc. pp. (falls ich eine Lösung oder “Best practice” finde melde ich mich auch gerne per Mail oder so bei dir).

        Zum Thema: das ist ja gerade das Problem: Man nahm bisher an, dass z.B. eine Datenschutzerklärung wie die deine ausreicht, um dem Recht formal genüge zu tun. Das besagte Urteil hebt das aber aus den Angeln bzw. schiebt es in einen Graubereich. Google Analytics ist davon an sich auch betroffen, aber wg. besserer/bereiterer Opt-Out-Möglichkeit nicht ganz so sehr angreifbar.

        Wenn das so weitergeht führt wohl an PopUp-artigen Lösungen (oder besser “usability nightmares”), wie z.B. unter http://www.truste.com/ zu sehen, nichts vorbei.

        Damit ist natürlich niemandem wirklich geholfen, denn das hat alles mit “besserem” Datenschutz so viel zu tun, wie die Aushänge im Supermarkt, die über die Datensammlung bei Kartenzahlung informieren. Hilft dem *realen* Datenschutz genau gar nicht weiter (und dort gibt es wirklich viele Baustellen), aber formal ist alles super. Gnah.

      • Nochmal ein Nachtrag: der Betreiber der bestimmt bekannte Seite Datenschutzbeauftragter-info.de ist auch noch etwas ratlos (s. Kommentar vom 12. März 2014 um 11:42 Uhr): http://www.datenschutzbeauftragter-info.de/fachbeitraege/piwik-datenschutzkonform-einsetzen/

        Ich denke man sollte zumindest die Datenschutzerklärung unter genau dieser Bezeichnung *direkt* per Link überall aufrufbar machen (so wie eben bisher auch das Impressum) und mal abwarten, wie sich das weiter entwickelt.

    • Die Problematik gilt gleichermaßen für Google-Analytics, der Beklagte hat nur „zufällig“ Piwik eingesetzt. Ein globales Opt-Out über einen Google-Account ersetzt in keinster Weise die Einholung der Zustimmung vor beginn des Trackings.

      Ich halte das Urteil allerdings für Realitätsfern und das obwohl mit Datenschutz sehr am Herzen liegt. Um nicht alle Nutzer nerven zu müssen, könnte man die Rückfrage nur bei Besuchern anzeigen, die keinen DNT-Header senden. Wobei der leider wenig aussagekräftig ist, da Microsoft ihn im Internet Explorer initial falsch setzt.

Hinterlasse eine Antwort

Auf Linux und Ich darf anonym kommentiert werden. Die Felder für Name und E-Mail-Adresse dürfen beim Eintragen eures Kommentars leer bleiben. Ich freue mich aber über jeden Kommentar, zu dem der Autor mit seinem Namen steht.