Posaďte sa do prvej rady

Zaujal vás tento článok? Prihláste sa do nášho newslettra a dostávajte články z nášho blogu medzi prvými.

Aj napriek tomu, že WordPress poháňa takmer 34% webových stránok najrôznejších zameraní na celom internete (a 60% stránok s akýmkoľvek CMS), nesmieme zabudnúť, že je to platforma primárne vyvíjaná na publikovanie článkov.

Počet návštev článku je jedna z najdôležitejších metrík pre autora, WordPress však defaultne túto funkcionalitu neponúka. Existuje nespočetne veľa pluginov, ktoré pomôžu, no vo väčšine prípadov je vhodné vyhnúť sa im, pokiaľ ide o takto jednoduchú vec. Predpokladá sa, že ovládate aspoň základnú prácu s WordPress-om a PHP kódom. Poďme na to.

Ukladanie návštev do meta dát

Spočítané návštevy je potrebné niekde ukladať. Využijeme na to funkcionalitu meta dát, ktorú WordPress ponúka a vytvoríme si vlastný meta kľúč pre tento účel. Najprv si v súbore functions.php aktívnej témy vytvoríme funkciu na vytvorenie/aktualizovanie meta kľúča, v ktorom budeme počet návštev uchovávať.

<?php
function ahoi_set_post_views($postID) {
    $count_key = 'ahoi_post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if ($count==''){
        $count = 0;
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, '0');
    } else {
        $count++;
        update_post_meta($postID, $count_key, $count);
    }
}
?>

Následne potrebujeme túto funkciu zavolať vždy, keď je článok zobrazený. Preto volanie funkcie umiestnime do PHP šablóny pre článok – single.php.

<?php
/* Funkcia musí byť volaná zvnútra while cyklu, aby sme mali prístup k ID
aktuálneho článku. Volanie umiestnite kdekoľvek dovnútra cyklu */

if ( have_posts() ) : while ( have_posts() ) : the_post();
	// Volanie funkcie s aktuálnym ID
	ahoi_set_post_views(get_the_ID()); 
endwhile; endif; 
?>

Zobrazenie návštev v administrácii

V ďalšom kroku sa vraciame do súboru functions.php. Počítadlo návštev už funguje. Teraz však potrebujeme, aby sa kliknutia zobrazovali aj v administrácii a aby sme si podľa nich články vedeli zoradiť.

V prvom kroku vytvoríme funkciu, ktorá z konkrétneho článku vytiahne počet návštev a v prípade, že v tomto článku ešte daný meta kľúč neexistuje – vytvorí ho.

<?php
function ahoi_get_blog_post_counter($post_ID) {
    $count = get_post_meta($post_ID, 'ahoi_post_views_count', true);
    if($count==''){
        $count = 0;
      	$count_key = 'ahoi_post_views_count';
        delete_post_meta($post_ID, $count_key);
        add_post_meta($post_ID, $count_key, '0');
    }
    return $count;
}
?>

Ďalšou funkciou vytvoríme vo WordPress administrácii nový stĺpec v zozname článkov.

<?php
function ahoi_create_blog_post_counter_column($defaults) {
    $defaults['blog_post_counter'] = 'Počet zobrazení';
    return $defaults;
}
add_filter('manage_posts_columns', 'ahoi_create_blog_post_counter_column');
?>

Stĺpec s názvom „Počet zobrazení“ nám už funguje, ale nie sú v ňom žiadne hodnoty. Ďalšia funkcia získa počet návštev pomocou funkcie ‚ahoi_get_blog_post_counter‘, ktorú sme napísali vyššie a tento počet vloží do tabuľky.

<?php
function ahoi_display_blog_post_counter($column_name, $post_ID) {
    if ($column_name == 'blog_post_counter') {
        $count = ahoi_get_blog_post_counter($post_ID);
        if ($count) {
            echo '<span>' . $count . '</span>';
        }
    }
}
add_action('manage_posts_custom_column', 'ahoi_display_blog_post_counter', 10, 2);
?>

Máme skoro hotovo. V administrácii už pri každom článku vidíme reálny počet kliknutí na článok vo vlastnom stĺpci. Chýba nám však dôležitá časť – možnosť zoradiť články podľa týchto hodnôt.

<?php
function ahoi_blog_post_counter_sortable( $columns ) {
    $columns['blog_post_counter'] = 'count'; 
    return $columns;
}
function ahoi_blog_post_counter_orderby( $query ) {
    if( ! is_admin() )
        return;
 
    $orderby = $query->get( 'orderby');
 
    if( 'count' == $orderby ) {
        $query->set('meta_key','ahoi_post_views_count');
        $query->set('orderby','meta_value_num');
        $query->set('order','DESC');
    }
}
add_filter('manage_edit-post_sortable_columns', 'ahoi_blog_post_counter_sortable' );
add_action('pre_get_posts', 'ahoi_blog_post_counter_orderby' );
?>

Viola! Máme hotovo. Spravili sme veľmi jednoduché, ale efektívne počítadlo návštev a to bez akéhokoľvek pluginu, či zbytočného kódu. Funkcionalitu vieme ešte veľmi jednoducho rozšíriť. Napríklad zakázať počítanie administrátorských kliknutí pomocou WordPress funkcie ‚current_user_can(‚administrator‘)‘, či dokonca obmedzenie počítadla na unikátnych návštevníkov, napr. pomocou cookies.

avatar

Autor: Kristián Filo

Web Developer a dizajnér so špecializáciou na WordPress a WooCommerce.

Návrat hore