WordPress Zoekmachine Optimalisatie SEO

Houd bij hoe vaak een pagina en bericht is bekeken door een gebruiker

Leestijd: 2 minuten (478 woorden)
profile image

Rick de Jong

Strategie

11 juni 2015 08:04

Statistieken meten

Ik kreeg onlangs de vraag van een van onze vaste klanten of wij een techniek konden bedenken om bij te houden hoe vaak een bericht en/of pagina is bekeken door ingelogde (geregistreerde) gebruiker. Dit hebben we uiteindelijk -door de complexiteit van de vraag- opgelost met event-tracking binnen Google Analytics. Op de achtergrond zijn we doorgegaan met een kleinere oplossing die misschien voor meerdere mensen bruikbaar kan zijn.

Single.php

Om te beginnen moet je binnen de loop van je single.php de volgende code gebruiken.

tsd_trackViewDates();

Deze code zorgt ervoor dat het ID van de gebruikers wordt opgeslagen zodra hij de pagina bekijkt.

Verloop

In de snippet hieronder is een optie toegevoegd waarmee de tijd waarop de bezoeker de website verlaat wordt vergeleken met zijn of haar nieuwe bezoek. 

Als die tijd kleiner is dan een ingestelde tijd, wordt hier een waarde "false" aangegeven. Op deze manier kun je er voor zorgen dat er specifieke meldingen op de pagina getoond worden als de bezoeker de pagina opnieuw inlaadt. 

Denk hierbij aan "Hey Rick, je was hier 6 minuten geleden ook... Kunnen we je misschien ergens mee helpen?" Hiervoor wordt gebruik gemaakt van 'strtotime' en in ons geval heb ik toegevoegd dan de verlooptijd 20+ minuten is.

Aan het eind van de functie vind je de optie tsd_getViewCounts();. Deze geeft gewoon het aantal unieke weergaven terug.

Code

Plaats de volgende code in je functions.php

function tsd_trackViewDates(){
 global $post, $current_user;
 $data_key = '_utime';
 $utime = time();
 $data = get_post_meta($post->ID, $data_key, true);
 if(is_array($data)){
       if ( !in_array( $current_user->ID, $data ) ) {
           $data[$utime] = $current_user->ID;
           $data = array_unique($data, SORT_NUMERIC );
           update_post_meta($post->ID, $data_key, $data, false);
       }else{
           $saved_time = array_search($current_user->ID, $data);
           $expiry_time = strtotime("+20 minutes",$saved_time); // expires time
           if($expiry_time < $utime) return true;
       }
 }else{
   $data = array();
   $data[$utime] = $current_user->ID;
   add_post_meta($post->ID, $data_key, $data, false);
 }
}
function tsd_getViewCounts(){
 global $post, $current_user;
 $data_key = '_utime';
 $data = get_post_meta($post->ID, $data_key, true);
 if(is_array($data)){ echo count($data); }
}

Om te bekijken welke waarde de expire functie teruggeeft kun je de volgende functie gebruiken:

if(tsd_trackViewDates() == true){
      echo 'message when true';
}else{
      echo 'message when false';
}