fbpx

Como exibir posts mais vistos no Wordpress sem plugin - Evertec Digital | Blog

Como exibir posts mais vistos no WordPress sem plugin

Preparamos um tutorial passo a passo, mostrando como preparar o Wordpress para listar os posts mais vistos em seu blog ou portal de notícias.

Compartilhe esse conteúdo!

Uma das formas de manter os leitores mais tempo engajados com seu blog ou portal de notícias é mostrando os assuntos que são os mais visitados de seu site.

Nativamente o WordPress não faz o registro de visitas, seja utilizando um plugin ou seguindo esse tutorial, a consulta irá considerar apenas a base de dados geradas a partir da implementação da solução escolhida.

Vamos ao tutorial

Primeiro precisamos prepara o seu tema para registrar as visitas do seu site no banco de dados. Para isso adicione o bloco de código abaixo, no arquivo functions.php do seu tema.

//registrando visitas
function ed_set_post_views($postID) {
    $count_key = 'ed_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);
    }
}

//Removendo pré-buscas para melhorar a precisão dos dados
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);

Agora precisamos adicionar a chamada para essa função no inicio do arquivo single.php ou single-post.php do seu tema. Para isso adicione a linha de código abaixo logo abaixo da chamada do get_header();.

ed_set_post_views(get_the_ID());

Até aqui, todas as visitas nos posts já estão sendo registradas no banco de dados. Agora iremos listar os posts mais vistos do seu site.

<?php
$args = array(
    'post_type' => 'post',
    'showposts' => '3',
    'meta_key' => 'ed_post_views_count',
    'orderby' => 'meta_value_num',
    'order' => 'DESC',
);

$the_query = new WP_Query($args);

if ($the_query->have_posts()) : while ($the_query->have_posts()) : $the_query->the_post();
        ?>
        <article <?php post_class("post_item"); ?>  id="post_item-<?= $post->ID; ?>">
            <?php
            if (has_post_thumbnail()):
                the_post_thumbnail('post-thumbnail', ['class' => 'post_image']);
            endif;
            ?>
            <header>
                <h3><?= get_the_title(); ?></h3>
        <?php the_excerpt(); ?>
            </header>
            <a  href="<?= get_permalink(); ?>" title="<?= get_the_title(); ?>">Saiba Mais</a>
        </article>

    <?php
    endwhile;
else: endif;

wp_reset_query();
wp_reset_postdata();
?>

Na listagem acima, setamos o argumento ‘showposts‘ para exibir apenas os 3 posts mais vistos, mas, fique a vontade para aumentar o limite de exibição;

Exibindo a quantidade de visitas do post

Pode ser que você queira exibir a quantidade de visitas que cada post recebeu. Para isso iremos criar uma nova função que ira fazer essa consulta, então, adicione o código abaixo no arquivo functions.php.

//Exibe numero de visualizações do post
function ed_get_post_views($postID) {
    $count_key = 'ed_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";
    }
    return $count;
}

Agora você pode fazer a chamada para essa função dentro do post ou na listagem do post. Para exibir o numero de visitas, realize a chamada da função acima, com a linha de código abaixo:

<?= ed_get_post_views(get_the_ID());?>

Você poderá modificar a apresentação do numero de visitantes, determinando a quantidade de caracteres iniciais de exibição, utilizando o str_pad da seguinte forma:

<?= str_pad(ed_get_post_views(get_the_ID()), 4, 0, STR_PAD_LEFT); ?>

Como pode observar, nossa solução irá listar os posts mais vistos de forma geral, não sendo possível determinar um espaço de tempo para essa consulta, comumente utilizado em portais de notícias, para exibição das notícias que estão em alta na semana.

Então, esse tutorial foi útil? Gostaria de sugerir alguma implementação ou correção? Deixe nos comentários.


Compartilhe esse conteúdo!
Tags do Post:

Conteúdos Relacionados

Veja alguns conteúdos que também podem lhe interessar.

Mais Populares

Veja os nossos conteúdos mais acessados.