Do tej pory korzystałem z wtyczki Google Analytics for WordPress, niestety z czasem okazało się, że nie posiada ona możliwości, które są mi potrzebne do testowania zaawansowanych i niestandardowych możliwości Google Analytics. Nadal uważam, że to bardzo dobra wtyczka i 95% osób będzie zadowolona z efektów jej działania. W tym wpisie przedstawię sposób na napisanie własnej wtyczki WordPress do obsługi Google Analytics z dorzucaniem niestandardowego kodu śledzącego.
Budowa własnej wtyczki w WordPress
Mechanizm tworzenia i uruchamiania wtyczek w WordPress nie jest skomplikowany. Stworzenie prostego wtyczk zajmuje kilka minut. Stworzenie wtyczki zaawansowanej wymaga więcej czasu, ale też jest możliwe a efekty mogą być naprawdę imponujące.
Uwagi do wtyczki: Podany niżej kod przedstawia całą wtyczkę. Ze względu na ograniczenia formatowania niektóre fragmenty kodu zostały podzielone na więcej niż jeden wiersz. Może to spowodować problemy w przypadku kiedy kod będzie bezpośrednio przeklejany z wpisu.
Na początek wtyczki należy dodać komentarz, w którym zostaną podane informacje opisujące wtyczkę. Główne informacje to nazwa wtyczki, autor i licencja. Kolejne to opis, ścieżka skąd można pobrać plugin, wymagana wersja WordPressa oraz aktualna wersja wtyczki.
/*
Plugin Name: GA Custom
Plugin URI: http://www.trajdos.pl/rozszerzenia/gacustom
Description: Zadaniem wtyczki jest doklejanie w sekcji Head
strony własnego kodu śledzącego GA.
Version: 0.1 (alfa)
Requires at least: 3.1.1
Author: Łukasz Trajdos
Author URI: http://www.trajdos.pl
License: GPL2
*/
Opis wtyczki jest prosty i nie wymaga większego komentarza. Szczególnie, że w poprzednim wpisie już się na tym skupiałem.
Tworzona wtyczka ma dodawać kod Google Analytics. Plugin będzie testowany również na innym serwerze, dlatego w celu zabezpieczenia się przed gromadzeniem niepotrzebnych informacji będzie sprawdzana nazwa hosta na jakim wyświetla się strona. W przypadku tej wtyczki będzie to nazwa domeny blogu. Aby sprawdzanie było możliwe stworzyłem zmienną $host.
global $host; $host = 'www.trajdos.pl';
Wszystkie funkcje add_action() wywoływane są dopiero po tym jak host serwera jest taki sam jak zadelarowany wcześniej w zmiennej $host. Po sprawdzeniu hosta wykonywane są cztery funcje add_action:
- my_add_googleanalytics – dodaje kod Google Analytics do sekcji head (wp_head).
- my_add_jquery – dodaje kod podpinającyc jQuery do strony w sekcji head (wp_head).
- my_ga_track_linkout – dodaje do sekcji head instrukcje odpowiedzialne za śledzenie kliknięć w linki zewnętrzne (wp_head).
- custom_add_action_my_ga_track_spenttime – funkcja odpowiedzialna za sprawdzenie czy jest to strona postu i jeżeli tak jest wstawienie kodu odpowiedzialnego za śledzenie długości odsłony (get_header).
Wszystkie funkcje zostaną opisane szczegółowo w dalszej części wpisu.
if($_SERVER['HTTP_HOST']==$host) {
add_action('wp_head', 'my_add_googleanalytics');
add_action('wp_head', 'my_add_jquery');
add_action('wp_head', 'my_ga_track_linkout');
add_action('get_header','custom_add_action_my_ga_track_spenttime');
}
W ramach funkcji custom_add_action_my_ga_track_spenttime() sprawdzana jest odpowiedź funkcji is_single(). Jeżeli zwrócona zostaje odpowiedź TRUE oznacza to, że aktualnie przeglądana jest strona wpisu. W takiej sytuacji wywoływana jest funkcja add_action, która wyzwala funkcję my_ga_track_spenttime().
Wywołanie funkcji my_ga_track_spenttime() musi być zrealizowane w taki sposób, ponieważ tylko w tym kontekście (względem get_header) funkcja jest w stanie prawidłowo sprawdzić czy aktualnie wyświetlana jest strona wpisu. W innych okolicznościach zawsze zwracane jest FALSE, przez co kod nigdy nie zostałby podpięty.
function custom_add_action_my_ga_track_spenttime() {
if(is_single ()) {
add_action('wp_head', 'my_ga_track_spenttime');
}
}
Funkcja my_add_googleanalytics() wkleja kod Google Analytics.
Uwaga! Na temat Google Analytics i kodów pisałem we wpisie Zakładnie konta i tworzenie profilu w Google Analytics.
function my_add_googleanalytics() {
?>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXX-X']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript';
ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl'
: 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
})();
</script>
<?php
}
Funkcja my_add_jquery() wkleja kod odpowiedzialny za podłączenie do strony biblioteki jQuery w wersji 1.5.2 z serwera jquery.com.
function my_add_jquery() {
?>
<script type='text/javascript'
src='http://code.jquery.com/jquery-1.5.2.min.js'></script>
<?php
}
Funkcja my_ga_track_spenttime() odpowiedzialna jest za wklejenie kodu śledzącego zdarzenia polegające na mierzeniu czasu wyświetlania strony.
Uwaga! Kod wklejany przez funkcję był opisany we wpisie Jak obniżyć współczynnik odrzuceń (bounce rate) w Google Analytics.
function my_ga_track_spenttime() {
?>
<script type="text/javascript">
$(document).ready(function() {
setTimeout(function() {
_gaq.push(['_trackEvent', 'PageView', 'SpentTime', 'Short'])
},30000)
setTimeout(function() {
_gaq.push(['_trackEvent', 'PageView', 'SpentTime', 'Medium'])
},300000)
setTimeout(function() {
_gaq.push(['_trackEvent', 'PageView', 'SpentTime', 'Long'])
},900000)
});
</script>
<?php
}
Funkcja my_ga_track_linkout() odpowiada za wklejenie kodu odpowiedzialnego za śledzenie kliknięć w linki wychodzące z serwisu.
Uwaga! Kod umieszczany przez funkcję był opisany we wpisie śledzenie linków wychodzących w Google Analytics.
function my_ga_track_linkout() {
?>
<script type="text/javascript">
$(document).ready(function() {
$('a:not([href^="http://www.trajdos.pl"])').click(function() {
var href = $(this).attr('href')
.toString()
.replace('http://','')
.replace('https://','')
_gaq.push(['_trackEvent', 'LinkOut', 'LeftClick', href])
});
$('a:not([href^="http://www.trajdos.pl"])').mousedown(function(event) {
if(event.which == 3) {
var href = $(this).attr('href')
.toString()
.replace('http://','')
.replace('https://','')
_gaq.push(['_trackEvent', 'LinkOut', 'RightClick', href])
}
});
});
</script>
<?php
}
I to wszystko. Wtyczka po odpowiednich modyfikacjach powinna działać na każdym blogu.
Podsumowanie
Aktualnie wtyczka jest bardzo prosta. Z czasem będzie się rozrastała i wzbogacała o nowe możliwości. Głównym celem dla mnie jest stworzenie narzędzia o dużych możliwościach, które można w pełni skonfigurować zaawansowane korzystanie Google Analytics z poziomu panelu administracyjnego WordPressa.
2 komentarze
Przydatne, szczególnie dla kogoś kto coś niecoś o programowaniu wie, a potrzeba mu kilku informacji: jak to się je z WP. Brakuje tylko kilku zdań o tworzeniu prostego interfejsu do zarządzania parametrami wtyczki z panelu admina – może w kolejnej publikacji? Pozdrawiam
nie ma jakieś prostszej metody, np. wtyczka do wordpressa? Chciałbym otrzymać jakiś prostszy sposób bo nie ogarniam programowania