Počet přečtení článku za pomoci Google Analytics

V rubrice: Tipy & Triky | Obtížnost:

Pokud u svých článků chcete zobrazovat počet přečtení, tak WordPress vám nabídne velké množství pluginů, které můžete použít. Velkou nevýhodou je ovšem fakt, že začínáte lidově řečeno od nuly. I když už vaším blogem prošly tisíce lidí, tak u všech článků vám bude svítit děsivá nula. Pokud k měření návštěvnosti používáte Google Analytics, mám pro vás řešení.

Právě v analytikách máte počet přečtení uložený, takže ho musíte jen nějak chytře vytáhnout. Prvním krokem je instalace pluginu Google Analytics Dashboard. Ten sám o sobě umí zobrazit grafy o návštěvnosti přímo ve WordPressu, ale pro nás bude sloužit především jako prostředek pro komunikaci s Google účtem.

Když svůj účet propojíte vyberte ještě požadovanou doménu. Na výběr ještě máte, kdo může v adminu statistiky vidět a rovněž po jakou dobu se má uchovávat cache.

V momentě, kdy máte plugin instalován a nastaven, je čas na nějaké vlastní úpravy. Do šablony (soubor functions.php) vložíte následující kód:

add_action('init', 'GALoad');

function GALoad(){
	class SingleGADWidgetData extends GADWidgetData {

    function gad_pageviews_text_begining($link_uri){
	    if($this->auth_type == 'oauth') $ga = new GALib('oauth', NULL, $this->oauth_token, $this->oauth_secret, $this->account_id);
	    else $ga = new GALib('client', $this->auth_token, NULL, NULL, $this->account_id);
	    $start_date = date('Y-m-d', strtotime("2005-01-01"));
	    $end_date = date('Y-m-d');
	    $data = $ga->total_uri_pageviews_for_date_period($link_uri, $start_date, $end_date);
	    $error_type = gad_request_error_type($ga);
	    if($error_type == 'perm') return '';
	    else if($error_type == 'retry') $data = $ga->total_uri_pageviews_for_date_period($link_uri, $start_date, $end_date);
	    return $data['value'];
	  	}

	 function get_page_views($url){
	 	$url = parse_url($url);
	 	$url = $url['path'];
	 	return number_format($this->gad_pageviews_text_begining($url), 0, ",", " ");
	 	}
	}
}

Tím rozšíříme funkčnost pluginu, aby nám textově vracel počet zobrazení stránky od úplného počátku. Nyní zbývá vše implementovat do šablony. Najděte si místo, kde chcete počet přečtení zobrazit (obvykle index.php, single.php, archive.php, záleží na šabloně) a vložte:

<?php
$data = new SingleGADWidgetData();
echo "Zobrazeno: " . $data->get_page_views(get_permalink()) . "x";
?>

A jaká jsou úskalí? Pokud jste v někdy měnili strukturu linků, tak stará zobrazení se vám nepřipočtou (což se ale dá ošetřit). Pokud jste ale např. migrovali na jinou doménu, tak to pro Google Analytics není problém.

A další možná rozšíření? Widget nejčtenějších článků, a to jak celkem, tak třeba za posledních x dní. Ale o tom zase příště.

V rubrice: Tipy & Triky | Obtížnost:

Komentáře

  1. U každého počitadla návštěvnosti je taky důležitým faktorem, jak se bude chovat v kombinace s cache (tohle řešení vypadá, že měří všechny návštěvy, ale počet updatuje jen po vypršení cache).

    1. Přesně tak. Měření se provádí na základě nastavení v Google Analytics, tj. poslouchá všechny filtry na IP, které si uděláte, a poté je možné si nastavit vyprazdňování cache dle libosti.

  2. Díky moc za návod. Bál jsem se, že budu muset složitě zapisovat stará data za 2 roky běhu webu do nějakého nového pluginu. Tohle mi ušetřilo mnoho práce. Zprovozněno za 5 minut a jako by to tam bylo od začátku. 🙂

    Ještě jednou díky.

    1. Nahodil jsem plugin i sem. Akorát s jednou chybkou, takže, než se to všechno aktualizuje budou některý čísla trochu divoký.

      Ještě k funkčnosti, stalo se mi, že se mi vyčerpal limit a už jsem nemohl na analytiky posílat žádosti o data. Stačí si ale tady zaregistrovat aplikaci – https://code.google.com/apis/console/?pli=1, do souborů (v plugin google dashboard) gad-admin-options.php a ga-lib.php vložit místo ano anonymous, anonymous svoje Client ID a Client secret. Pak už limit stačí bohatě.

  3. Už ho mám na webu taky, ale přecházel jsem na novou doménu a zatím jsem si nepohrál s propojením se starými zobrazeními. Takže začínám od nuly. Ale asi mi to moc nevadí. Jsem rád, že to tam mám 🙂

    1. Analylitiku je jedno na jaké doméně návštěva byla (pokud jsi to nezměnil při vkládání kód), co se musí ošetřit je spíše změna struktury trvalých odkazů.

  4. Právě, začínám od nuly i s Google Analytics. Dělal jsem totiž víc změn, i v kódu, takže mi to nevadí. Nechám to tak, jak to je.

    Btw. konečně jsem vyřešil pár zásadních problémů na blogu, i proto migrace na novou doménu, takže můžu konečně blogovat s čistým svědomím (pořád mě to hryzalo, jestli to znáš) a možná proto mi nevadí, když to bude „od nuly“. 🙂

  5. Super návod, mnohokrát děkuji. Jak jednoduché, ale sám by se s tím člověk musel velmi tedy vyhrát.

  6. a jakou zkušenost máš z rychlostí systému? já jsem nedávno podobný plugin zkoušel, ale šíleně mě vytěžoval web, tak jsem jej radši odinstaloval… ted raději využívám přehledy přímo v GA

    1. Na přehledy určitě využivat analytics, o tom žádná. Toto řešení má přinášet spíše informativní hodnotu čtenářům. Čív více je v databázi článku tím je zamozřejmě synchronizace nárocnějši. To se dá ovšem kompenzovat delší cache.

  7. Díky za hodnotný tip, plugin se sám postaral o všechno, co by jsem musel ručně nastavovat.

  8. Ahoj Michale!

    Nedávno jsem na blogu měnil šablonu a chtěl bych nastavit zobrazení počtu přečtení článku jako předtím. Jenže to se mi nedaří. Místo zobrazení počtu přečtení mi to zobrazí část kódu, konkrétně toto: get_page_views(get_permalink()) . "x"; ?>
    Nesetkal jsi se s tím náhodou?

    Děkuju moc,

    Forest

    1. Ahoj, podíval bych se, jestli tam nemáš špatně ukončené php tagy < ?php a ?>

      1. Tak jsem se k tomu zase dostal. Tagy mám ukončené správně. Zkoušel jsem to i zkopírovat ze staré šablony, bez výsledku. Chyba bude asi v nové šabloně, jenže netuším kde. Nevíš o nějaké alternativě?

        Děkuju,

        Forest

  9. Ahoj, díky moc za super tip. Jen mám dotaz – jak a kde co nastavit, aby se mi celkový počty zobrazovaly i v administraci článků? Protože tam jsou čísla pořád jen za posledních 30 dní. Díky moc!

  10. Omlouvám se, ale ještě doplňuju svůj předešlý dotaz – u té registrace na googlu kvůli vyčerpání limitu, potřebuju browser key nebo server key? A adresy „Authorized JavaScript origins“ a „Authorized redirect URI“, ta první je asi homepage webu, kde to bude? A ta druhá? Díky moc za radu! Mám takový tušení, že to je blbej dotaz, ale nevím si s tím rady 🙂 (a třeba to pomůže i dalším nešťatníkum jako jsem já)

    1. Potřebuješ server key, protože to probíhá na straně php.

      Authorized redirect URI by myslím měla být stránka v adminu wordpressu, kde máš login tlačítko na google. Ale tuto část si nepamatuji, je možné, že google něco v APIčku mezitím změnil.

Comments are closed.