Como mostrar as postagens mais vistas no WordPress

Como mostrar as postagens mais vistas ou populares no WordPress

Provavelmente, em alguma ocasião você encontrou a necessidade de mostrar uma lista das posts mais visualizadas ou mais populares no seu site. É muito normal querer destacar as informações mais relevantes ou aquelas que têm mais tráfego em nosso site.

Bem, por padrão, o WordPress não tem mecanismo para armazenar ou obter as informações de suas postagens mais relevantes. Como quase sempre, há um plugin (ou vários) que faz isso.

Sempre que você procura um plugin e encontra 5 ou 6 que podem ajudá-lo, você acaba se perguntando as mesmas perguntas e os mesmos pensamentos:

  • Qual será o melhor?
  • Qual deles demora mais sem atualizar? Eles são seguros?
  • As opções que um tem o outro não tem e vice-versa
    Alguns têm 1000 opções, das quais eu não entendo ou não sei o que são 900 delas.
  • Isso influenciará o desempenho do meu site?
  • Serei capaz de adaptá-lo ao meu design e ao que espero de acordo com minhas necessidades?

Não se preocupe, pois, neste caso, são apenas algumas linhas de código e, será sem plugin, assim, você terá 100% de controle do que deseja fazer, vamos ver como alcançar essa funcionalidade sem a necessidade de instalar plug-ins.

Construindo nossa própria funcionalidade para obter as postagens mais visualizadas ou mais populares sem plugins

Apenas adicione estas 2 funções no seu functions.php, e depois explicarei o que cada uma delas faz:

function set_post_views() {
if (is_single()) {
$post_ID = get_the_ID();
$count = get_post_meta( $post_ID, 'post_views', true );

if ( $count == '' ) {
delete_post_meta( $post_ID, 'post_views' );
add_post_meta( $post_ID, 'post_views', 1 );
} else {
update_post_meta( $post_ID, 'post_views', ++$count );
}
}
}
add_action( 'wp', 'set_post_views' );

// Função para obter o número de visualizações de uma postagem
function get_post_views($post_ID){
$count = get_post_meta($post_ID, 'post_views', true);

if ($count == ''){
delete_post_meta($post_ID, 'post_views');
add_post_meta($post_ID, 'post_views', 0);
return 0;
}
return $count;
}

Primeiro, temos a função set_post_views () que usaremos para contar as visitas às nossas postagens. A maneira de fazer isso é adicionando essa função ao rook wp. Nesse ponto, podemos perguntar se estamos em um único ou em um detalhe de uma postagem. Nesse caso, obtemos o ID e consultamos as visualizações que nossa postagem possui por meio de um campo personalizado que chamamos de post_views. Caso esteja vazio (a primeira vez que visitamos uma postagem), definimos como “1”. No caso de ter um valor, basta adicionar mais 1 ao valor (++ $ count). Com esta função, contaremos toda vez que alguém visualizar uma postagem.

A segunda função get_post_views() será usada para mostrar o número de visualizações da nossa postagem. Como temos controle absoluto, podemos chamar esses dados em uma lista de postagens e colocar o número de visualizações em um label ou badge, ou simplesmente colocar um tipo de texto: Esta postagem foi visualizada N vezes. Por exemplo, no loop single.php, podemos colocar algo assim:

<?php
/* Start the Loop */
while ( have_posts() ) : the_post();
$post_views = get_post_views(get_the_ID());?>

<p>Este post foi visto <?php echo sprintf( _n( '%s vez', '%s vezes', $post_views, 'your_textdomain' ), $post_views );?></p>

<?php
endwhile;
/* End of the loop.*/?>

Agora, se quisermos mostrar uma lista das postagens mais visualizadas ou populares, por exemplo, na barra lateral do site, teremos que fazer uma consulta como esta:

<?php
$args = array(
'posts_per_page' => 4,
'meta_key' => 'post_views',
'orderby' => 'meta_value_num',
'order' => 'DESC'
);

$popular_posts = new WP_Query( $args );
while ( $popular_posts->have_posts() ) : $popular_posts->the_post();?>

<h2><?php the_title();?></h2>
<?php the_excerpt();

endwhile;
?>

Esta consulta retornará as 4 postagens com o maior número de visualizações. O layout ou como você deseja mostrá-lo, deixo para sua imaginação

Adicionando essas informações ao wp-admin
Agora, adicionaremos as informações das postagens mais vistas ou mais populares à lista de postagens do wp-admin. Fazemos isso adicionando ao functions.php as funções posts_column_views () e posts_custom_column_views ():

// Adicionar coluna à lista de todos posts do wp-admin
function posts_column_views($defaults){
$defaults['post_views'] = __('Visualizações', 'your_textdomain');
return $defaults;
}
add_filter('manage_posts_columns', 'posts_column_views');

function posts_custom_column_views($column_name, $id){
if ($column_name === 'post_views'){
echo get_post_views(get_the_ID());
}
}
add_action('manage_posts_custom_column', 'posts_custom_column_views', 5, 2);

O que essas funções fazem é adicionar mais uma coluna à lista de todos os posts com o número de visualizações de cada post.

O que mais você pode fazer?

Como eu disse antes, ao fazê-lo manualmente (sem plugin), você tem total controle sobre o que deseja de resultado, como deseja, como vai mostrá-lo e onde vai mostrá-lo.

Deixo sua imaginação fluir, se você deseja ter um controle mais exaustivo, por exemplo:

Se o que o seu post foi visitado por um bot;
Se você deseja controlá-lo por país;
Se você deseja contar ou não os usuários e/ou visitantes que viram o post;
Se você deseja controlar se o mesmo usuário visita ou não uma post várias vezes;
etc.
 

Adapte-o às suas necessidades.

Array
Sobre Calixto

CalixtoOlá! Sou Hugo Calixto, Programador WEB e Profissional de SEO desde 2017.

Sou natural do Rio de Janeiro e vivo em São Paulo e Madrid.

O que faço: Desenvolvo Sites Personalizados (com ou sem Wordpress), Administro Servidores e sou Especialista em SEO (otimização de sites para mecanismos de busca).

E o que mais gosto no meu trabalho é : "Ajudar as pessoas" e "Experimentar de tudo" e "usar o que aprendo para poder fazer coisas novas".

Ah! Se precisar de ajuda, não excite, chama o Hugo Calixto.