Categorias
Programação Wordpress

Contador de acessos de seus artigos para WordPress

Quando procuramos por um contador de acessos de seus artigos ou algo relacionado à top posts no WordPress os tutoriais se limitavam a mostrar a popularidade de um post pela quantidade de comentários. O que não deixa de ser valido pelo fato de ser um bom filtro de popularidade, e alem disso faz uso de uma função nativa para fazer o loop, a comments_count().

Mas se necessitamos de um loop diferente? Por exemplo que pegue o numero de acessos das páginas e faça a distribuição por ordem crescente ou decrescente baseado nisso. O problema é que o WordPress não conta os acessos como tal não salva nada no base de dados, contudo, podemos sempre contornar esse problema.

Neste artigo vamos ver como fazer isso, vamos criar um contador de acessos, mas claro que você pode filtrar por IP ou outros que quiser. Este tutorial é apenas um começo para futuros códigos mais implementados.

Inserindo um contador de acessos

Vamos usar um código deste artigo, este contador de acessos já foi criado à algum tempo mas ainda fazemos uso dele, veja o código:

<?php
function getPostViews($postID){
    $count_key = 'post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if($count==''){
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, '0');
        return "0 View";
    }
    return $count.' Views';
}

function setPostViews($postID) {
    $count_key = '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);
    }
}
?>

Esse pequeno bloco de código deve ser adicionado ao arquivo functions.php do nosso tema. O que fizemos foi criar as duas funções, uma para gravar a contagem na base de dados e outra para mostrar a contagem.

Contando os acessos

Agora para por exemplo contarmos quantos acessos temos em cada um dos nossos artigos, vamos editar o arquivo single.php de nosso tema e procure pelo seguinte linha de código:

<?php while ( have_posts() ) : the_post(); ?>

Na linha seguinte escreva agora o código seguinte:

<?php if(function_exists('setPostViews')) { setPostViews(get_the_ID()); } ?>

Com esse código verificamos se a função existe e adicionamos +1 ao registo na base de dados.

Mostrando os acessos

Agora quando quisermos exibir os dados guardado pelo nosso contador de acessos é muito simples. Basta chamar a função para mostrar o numero de visualizações. Editamos o arquivo onde queremos mostra a contagem (single.php por exemplo) e escrevemos o código abaixo onde queremos mostrar o numero de visualizações.

<?php if(function_exists('getPostViews')) { echo getPostViews(get_the_ID()); } ?>

Exibir um top de páginas mais vistas

Mas para exibirmos um top de páginas mais vistas vamos precisar montar um loop específico para isso. Vamos para a página onde queremos criar o loop e antes do “while ( have_posts() )” adicionamos o seguinte código:

<?php
query_posts( array(
       'post_type' = > 'post',
       'meta_key' = > '_views',
       'orderby' = > 'meta_value_num',
       'order' = > 'DESC',
       'post_per_page' = > '10'
));
?>

Sendo que o valor de post_type é o tipo da página (page, post ou custom_post), e você pode ordenar com DESC ou ASC, para mostrar respetivamente os artigos mais vistos e os menos vistos. Por fim, o post_per_page define a quantidade de artigos que vai ser exibida por página.

Para finalizar, depois do endwhile do loop adicionamos:

<?php wp_reset_query(); ?>

Esse código faz um reset ao loop para que possamos ter outros loops diferente na página.

E você conhecia esta técnica como contador de acessos? Conhece ou usa outra? Comente!

Um abraço e até já!



3 comentários a “Contador de acessos de seus artigos para WordPress”

Olá, tentei fazer este código e quando acesso uma página, o contador incrementa normalmente o número de acessos, mas também aumenta o contador de acessos do post posterior.

Ex.: Tenho os posts 1, 2 e 3. Quando acesso o post 1, é incrementado o contador do 1 e do 2, quando acesso o post 2, é incrementado o contador do 2 e do 3 e apenas quando acesso o post 3 que ele funciona como esperado.

Procurei outros códigos que são parecidos e todos apresentam o mesmo problema na minha instalação do wordpress.

Viva, você deve estar fazendo algo mal, o código esta funcionando direitinho… é usado o “get_the_ID()” que vai buscar o id do post que esta sendo visualizado… se o ID é 1 ele vai marcar +1 nesse ID…

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *