Ve Fitness i na webu platí zlaté či platinové (či jakékoliv kovové) pravidlo, že co se dá změřit, to se dá zlepšit. K tomu se samozřejmě výborně hodí Google Analytics, kde lze měřit konverze například v podobě okomentovaných článků. Taková data sice poskytnou rychlý přehled, ale když potřebujete vědět, odkud k vám přišel autor konkrétního komentáře, jste namydlení. Data z googlu jsou totiž anonymní.
Nejsem kouzelník, který by to zvládl zjistit zpětně, ale v dnešním článku si ukážeme, jak vytvořit plugin, který načte data o uživateli, zjistí si, odkud přišel, a následně tento údaj uloží do databáze v momentě, kdy okomentuje článek.
Zjisti
První krok je správně analyzovat příchod uživatele na web. Pokud přišel přes nějakou kampaň, rozpoznáme to tak, že v url nalezneme parametry utm_campaign nebo utm_medium nebo utm_source. Pakliže nic takového v url nenalezneme, pokusíme se ještě určit referera stránky, tedy z jaké domény uživatel přišel. A pokud se cokoliv z toho změní, uložíme si data pěkně do session.
Kód vypadá následovně:
<?php function tc_updateReferer($referer) { session_start(); $_SESSION['comment_referer'] = $referer; } function tc_init() { // do track users in admin if (is_admin()) { return; } $toSet = []; // first check for parameters in url $parametersToSeach = ['utm_campaign', 'utm_medium', 'utm_source']; foreach ($parametersToSeach as $parameter) { if (isset($_GET[$parameter]) && $_GET[$parameter]) { $toSet[$parameter] = $_GET[$parameter]; } } // if we found some parameters, save them and end this script if (count($toSet) > 0) { tc_updateReferer('?' . http_build_query($toSet)); return; } // now search for referer $referer = $_SERVER['HTTP_REFERER']; // there is no referer, anything to update if (!$referer) { return; } // referer is at same domain, dont trac it if (strpos($referer, '://' . $_SERVER['HTTP_HOST']) !== false) { return; } // we found referer, save ti tc_updateReferer($referer); } add_action('init', 'tc_init', 10); ?>
Zapiš
Dalším krokem je zapsat tento záznam do databáze v momentě, kdy návštěvník okomentuje článek. Pro lepší pochopení kódu se doporučuji mrknout na můj úvod do filtrů a akcí.
function tc_pushRefererToComment($comment_ID) { session_start(); if (isset($_SESSION['comment_referer']) && $_SESSION['comment_referer']) { update_comment_meta($comment_ID, 'referer', $_SESSION['comment_referer']); } } add_action('comment_post', 'tc_pushRefererToComment', 10, 1);
Zobraz
A jako poslední krok nyní zbývá uložená data zobrazit v administraci. Nejlepší bude udělat si takový malý hack. Na výpis komentářů v adminu použijeme filter a referera zobrazíme pod tělem komentáře. Celé to vypadá nějak takto:
function tc_addRefererToList($text) { global $comment; echo '<div class="comment-meta">'; echo get_comment_meta($comment->comment_ID, 'referer', true); echo '</div>'; return $tex; } add_filter('comment_row_actions', 'tc_addRefererToList', 10, 1);
Máte implementování? Gratuluji, jste strašný stalkeři.