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.

What’s up to all, the contents present at this web site
are actually amazing for people experience, well, keep up the good work fellows.