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.
V prípade, že potrebujete pomoc s nastavením jednoduchého webu, alebo s programovaním komplexného webového riešenia, ozvite sa nám, sme tu pre vás!