Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej OK, rozumiem
WebHelp.pl Warsztat Porady WordPress: zliczanie liczby wyświetleń wpisów

Warsztat / Porady

WordPress: zliczanie liczby wyświetleń wpisów

Bartosz Romanowski 10 marca 2012 komentarze ()

Tagi:WordPress

W wielu serwisach zbudowanych na WordPressie obok każdego wpisu prezentowana jest liczba jego wyświetleń. Zwykle funkcja ta realizowana jest za pomocą jakiejś wtyczki. Ja pokażę jak wykonać taki mechanizm we własnym zakresie, na dodatek nie obciążając niepotrzebnie serwisu rozbudowanym kodem - nasze rozwiązanie mieści się bowiem w 25 linijkach kodu.

Na początek musimy stworzyć funkcję zliczającą wyświetlenia wpisów. Do zapisywania liczby odsłon wykorzystamy możliwość dodawania do wpisów meta-danych. Aby ułatwić implementację zliczania w szablonie podepniemy tę funkcję pod akcję the_content, dzięki czemu nie będziemy musieli umieszczać wywołania funkcji w pliku szablonu. Poniższy kod należy umieścić w pliku functions.php lub w pliku wtyczki:

Kod: Zaznacz cały
add_filter('the_content', 'post_views_count');
function post_views_count() {
    global $post;
	
    if(!(is_single() && in_the_loop()))
        return;
	
    $views = get_post_meta($post->ID, 'post_views_count', true);
    $views++;
    update_post_meta($post->ID, 'post_views_count', $views);
}
Teraz musimy stworzyć funkcję zwracającą liczbę wyświetleń wpisu. Ponieważ w większości przypadków będzie ona wywoływana wewnątrz pętli (The Loop), podanie identyfikatora wpisu w parametrze będzie opcjonalne.
Kod: Zaznacz cały
function get_post_views_count($post_id = 0) {
    global $post;
	
    if($post_id == 0)
        $post_id = $post->ID;

    $views = get_post_meta($post_id, 'post_views_count', true);
    if(empty($views))
        return 0;
    else
        return $views;
}
I to praktycznie wszystko. Aby pokazać na stronie liczbę wyświetleń wpisu należy w dowolnym miejscu szablonu wyświetlającego listę wpisów lub pojedynczy wpis umieścić wywołanie funkcji get_post_views_count():
Kod: Zaznacz cały
<?php echo get_post_views_count(); ?>
W prosty sposób możemy również wyświetlić listę najpopularniejszych (czyli posiadających największą liczbę wyświetleń) wpisów. Poniższy kod należy wstawić w dowolne miejsce szablonu:
Kod: Zaznacz cały
<ul>
<?php
$args = array('numberposts' => 5, 'meta_key' => 'post_views_count', 'orderby' => 'meta_value_num');
$popular_posts = get_posts($args);
foreach($popular_posts as $post) : ?>
    <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
</ul>
Powyższe rozwiązanie nie będzie działać z wtyczkami cache, takimi jak WP Super Cache czy W3 Total Cache.

Masz pytania lub wątpliwości? Odwiedź nasze forum dyskusyjne.

Bartosz Romanowski

Programista, gadżeciarz, krytyczny miłośnik produktów Apple, fan ciężkich brzmień i niepoprawny pesymista.


Komentarze


HTML CSS JavaScript PHP bazy danych MySQL Flash grafika framework hosting domeny pozycjonowanie wordpress Facebook