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.'¬e='.$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.

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!]






Schreibe einen Kommentar