Você está procurando uma maneira de rastrear visualizações de posts sem um plugin usando metadados de post? Embora provavelmente exista um plugin para isso, criamos um snippet de código rápido que você pode usar para rastrear visualizações de posts sem um plugin usando metadados de post no WordPress.
Instruções:
Adicione este código ao arquivo functions.php do seu tema ou a um plugin específico do site:
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);
}
}
// Remove issues with prefetching adding extra views
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);
Opcionalmente, adicione este código também a uma coluna no painel do WordPress que exibe as visualizações do post:
// Add to a column in WP-Admin
add_filter('manage_posts_columns', 'posts_column_views');
add_action('manage_posts_custom_column', 'posts_custom_column_views',5,2);
function posts_column_views($defaults){
$defaults['post_views'] = __('Views');
return $defaults;
}
function posts_custom_column_views($column_name, $id){
if($column_name === 'post_views'){
echo getPostViews(get_the_ID());
}
}
Esta parte do código de rastreamento de visualizações definirá as visualizações do post. Basta colocar este código abaixo dentro do arquivo single.php dentro do Loop do WordPress.
<?php
setPostViews(get_the_ID());
?>
Observação sobre cache de fragmentos: Se você estiver usando um plugin de cache como o W3 Total Cache, o método acima para definir visualizações não funcionará, pois a função setPostViews() nunca seria executada. No entanto, o W3 Total Cache possui um recurso chamado cache de fragmentos. Em vez do acima, use o seguinte para que setPostViews() seja executado corretamente e rastreie todas as suas visualizações de post, mesmo quando o cache estiver ativado.
<!-- mfunc setPostViews(get_the_ID()); --><!-- /mfunc -->
O código abaixo é opcional. Use este código se você quiser exibir o número de visualizações dentro de seus posts. Coloque este código dentro do Loop.
<?php
echo getPostViews(get_the_ID());
?>
Observação: Se esta é a primeira vez que você adiciona trechos de código no WordPress, consulte nosso guia sobre como copiar / colar trechos de código corretamente no WordPress, para não quebrar acidentalmente seu site.
Se você gostou deste trecho de código, considere conferir nossos outros artigos no site, como: 10 melhores plugins de depoimentos do WordPress e como configurar o rastreamento de autores no WordPress com o Google Analytics.
Olá, procurando uma consulta para remover posts sem visualizações, alguma ideia? obrigado 🙂
Kevin, obrigado por este bom trecho de código.
Como isso funcionará para um site com um volume de tráfego muito grande? Eu estava olhando para um plugin de visualização de posts que é muito popular (não consigo lembrar o nome agora), e essa foi uma preocupação mencionada nos comentários.
Funciona bem com novas versões do WP. Certifique-se de que as coisas estejam configuradas corretamente.
Olá, há alguma maneira de redefinir o contador para zero visualizações?
Olá Cyndy, tudo é salvo como metadados, então você pode simplesmente ir ao post e alterar o valor de qualquer coisa para zero.
Kevin, obrigado
seu tutorial muito útil!!
Oi Cyndy, Oi Kevin.
Código legal.
Não consigo encontrar o local exato onde esses metadados são armazenados para cada postagem para alterá-los.
Dentro da postagem (Do Painel->Postagem->Editar) há apenas o conteúdo da postagem, sem metadados.
Obrigado.
Oi Kevin!
Estou usando seu snippet há algum tempo e estou feliz, mas nas últimas semanas algo aconteceu e ele parou de contar todas as visualizações. Sei disso porque vejo 500 visualizações do Google Analytics, mas o snippet mostra apenas 18 visualizações? Estou usando o código exato que você apresentou aqui, sem modificações. Eu apenas mudei uma contagem no mês passado e desde então tudo parou de funcionar.
Normalmente isso aconteceria porque você instalou um novo plugin ou algo parecido. Testei este trecho de código em novas versões do WordPress e ele deve funcionar perfeitamente. Você por acaso tem um plugin de cache rodando no seu site, como o w3 total cache?
Eu tenho o w3 instalado. Como isso está afetando o trecho de código? funcionou até agora com ele lado a lado, por que está causando problemas agora? Limpei o cache muitas vezes e ainda nada. afffff!
porque ele não estaria chamando a função setPost, já que as coisas estão em cache, me envie um e-mail usando o formulário de contato e eu lhe enviarei uma versão atualizada que resolverá o problema.
você pode compartilhar aqui?
Existe alguma maneira de a contagem de visualizações ser redefinida todos os dias para mostrar apenas o número de visualizações do dia atual?
Oi Pere,
Sim, absolutamente, mas você teria que mudar uma quantidade razoável de código para conseguir isso. Infelizmente, não é apenas uma mudança simples.
É exatamente isso que estou procurando. Existe algum lugar onde eu possa obter essas informações?
Preciso implementar uma página de seção de tendências para um cliente meu e estou um pouco travado com isso no momento. Parece que não consigo encontrar nenhuma informação sobre isso na web.
Qualquer ajuda seria muito apreciada!
Olá Pere, você descobriu alguma coisa sobre isso?
Existe alguma maneira de fazer isso registrar apenas visualizações únicas? Apertar F5 no meu teclado está aumentando os números.
Oi Mark,
Sim, mas não facilmente com este snippet. Você poderia fazer alguma verificação de cookies, ou rastreamento de endereços IP para visualizações únicas melhores, mas não perfeitas. Ou até mesmo exigir que os usuários façam login e rastrear com base em cada usuário.
$count = 0; em setPostViews() na linha #15 deve ser removido, ele não faz nada 😉
Sem dúvida o snippet mais rápido de implementar
Estou usando-o para vários métodos de notificação frontend, ótimo trabalho
Você arrasa!
obrigado este tutorial
Onde a contagem é armazenada? Está em um banco de dados?
Queria saber se é possível alterar os valores.
Funciona bem para mim na versão mais recente do WordPress, obrigado.
para mim está contando duas vezes...
Olá Andrew, provavelmente é pré-busca, ou o setViews está sendo adicionado mais de uma vez. Para resolver um problema, tente adicionar isto. Observe o código acima.
// Remove problemas com o pré-carregamento adicionando visualizações extras
remove_action( ‘wp_head’, ‘adjacent_posts_rel_link_wp_head’, 10, 0);
Olá, isso parece parar de funcionar no WP 4.0. Alguém pode confirmar ou fornecer uma correção? obrigado!
Você ouviu alguma coisa sobre isso? Acabei de atualizar para a versão 4.0 e gostaria de usar isso.
O mesmo aqui.
Estou usando a versão 4.0 e nada de errado 🙂
Uau. Isso me poupou tempo. Muito legal, cara, obrigado.
Ótimo trecho, mas ainda incrementando em cada postagem.
Olá!
Desculpe pelo inglês ruim, estou usando um tradutor. Sou do Brasil.
Tenho um site que já tem várias visualizações nas postagens, como não perco essas visualizações? É para atualizar o banco de dados? Eu uso este plugin: WP-PostViews
Você poderia me ajudar a estilizar a saída do echo? Quero colocar a contagem de visualizações no meu loop e consegui isso perfeitamente, mas como adiciono um CSS à saída para o texto? Alguma ideia sobre isso. Obrigado
Olá Randy, você pode fazer o seguinte adicionando uma div em torno da função php. Adicionei um exemplo no pastebin
http://pastebin.com/ThLasSJB
Tentei isso agora e não está funcionando.
Tentei isso agora e não está funcionando.
Tentei isso agora e não está funcionando.
Tentei isso agora e não está funcionando.
Tentei isso agora e não está funcionando.
Tentei isso agora e não está funcionando.
Oi Randy,
O snippet está exibindo o número de visualizações? Se sim, tem algo a ver com seu css ou html, pois copiar esse snippet e colocá-lo dentro do seu loop de postagem única deve funcionar bem. Você só precisa definir alguns estilos para aplicar.
Você poderia me ajudar a estilizar a saída do echo? Quero colocar a contagem de visualizações no meu loop e consegui isso perfeitamente, mas como adiciono um CSS à saída para o texto? Alguma ideia sobre isso. Obrigado
Você poderia me ajudar a estilizar a saída do echo? Quero colocar a contagem de visualizações no meu loop e consegui isso perfeitamente, mas como adiciono um CSS à saída para o texto? Alguma ideia sobre isso. Obrigado
Você poderia me ajudar a estilizar a saída do echo? Quero colocar a contagem de visualizações no meu loop e consegui isso perfeitamente, mas como adiciono um CSS à saída para o texto? Alguma ideia sobre isso. Obrigado
Você poderia me ajudar a estilizar a saída do echo? Quero colocar a contagem de visualizações no meu loop e consegui isso perfeitamente, mas como adiciono um CSS à saída para o texto? Alguma ideia sobre isso. Obrigado
Você poderia me ajudar a estilizar a saída do echo? Quero colocar a contagem de visualizações no meu loop e consegui isso perfeitamente, mas como adiciono um CSS à saída para o texto? Alguma ideia sobre isso. Obrigado
Você poderia me ajudar a estilizar a saída do echo? Quero colocar a contagem de visualizações no meu loop e consegui isso perfeitamente, mas como adiciono um CSS à saída para o texto? Alguma ideia sobre isso. Obrigado
Você poderia me ajudar a estilizar a saída do echo? Quero colocar a contagem de visualizações no meu loop e consegui isso perfeitamente, mas como adiciono um CSS à saída para o texto? Alguma ideia sobre isso. Obrigado