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 em 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 sua primeira vez adicionando snippets de código no WordPress, consulte nosso guia sobre como copiar / colar snippets 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á,
Posso fazer uma contagem de visualizações falsa + contagem real?
Isso significa que posso definir o valor inicial manualmente (porque quero que meu post recém-publicado mostre um valor como 3.429 visualizações no primeiro minuto), para que meu post pareça ter um alto número de visualizações, é claro, combinado com a contagem real também.
Se sim, onde definir a contagem de visualizações falsa com base no código?
Qual seria a meta key para chamar isso em uma consulta?
‘post_views_count’ é a meta key.
Olá, é possível fazer com que o número de visualizações seja exibido apenas se for superior a 1000?
Você pode usar este código ao exibir a contagem de comentários:
if (getPostViews(get_the_ID()) >= 1000) { echo getPostViews(get_the_ID()); }Existe alguma maneira de excluir visualizações de administradores da contagem?
Você pode querer usar algo como este código para contar visualizações condicionalmente: https://www.isitwp.com/check-if-user-is-logged-in/
Olá Debjit Saha, não consigo encontrar a pasta single.php no meu template, onde devo colar o código?
O loop principal para posts individuais pode estar em outro arquivo de template. Você pode querer verificar um arquivo post.php ou um arquivo com nome semelhante.
Obrigado por este código. funcionou perfeitamente.
Bom trecho.
Como posso resetar as contagens e começar a contar novamente?
Se você souber o ID do post dos posts que deseja, isso deve funcionar.
UPDATE seuNomeDeBancoDeDados.wp_postmeta
set meta_value = 0
where meta_key = ‘post_views_count’ and post_id = 1934
Olá, muito bom seu post.
Minha pergunta é como trazer os dados do Google Analytics para mostrar o número de visualizações de Posts e Páginas?
Você tem um post ou um link sobre como implementar isso?
Infelizmente, não temos uma recomendação atual para isso exatamente. Dito isso, você pode querer verificar: https://www.monsterinsights.com/how-to-check-stats-for-individual-wordpress-posts-and-pages/
Algum plugin do Google Analytics que possa extrair dados de visualização e exibir no WordPress?
Há muitas opções… Você pode conferir nossa lista completa de melhores plugins de Google Analytics.
Os códigos não estão funcionando para mim. Tenho um tópico do bbpress, ou seja, o tipo de postagem é “topic”. Mas quando verifiquei, o meta_key está sendo gerado no backend. Mas os meta_values não estão sendo atualizados a cada visita.
Ótimos artigos, funciona bem na minha página
minha pergunta é, a contagem só começará após implementar esse código?
porque todas as minhas páginas antigas mostram 0 ou 1 visualização, quando na verdade já tiveram milhares de visualizações.
Sim, a contagem não começa até que o plugin esteja ativo. Quaisquer visualizações anteriores a isso não foram registradas por este plugin.
Muito obrigado – funciona muito bem!
Eu ‘melhorei’ a função get_post_views ligeiramente para que ela retorne o texto apropriado dependendo do número de visualizações. Aqui está a minha versão:
function get_post_views($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 Visualizações”; } if ($count==’1′) { return “1 Visualização”; } return $count.’ Visualizações’; }
Talvez você goste de adotar esta versão.
Obrigado por compartilhar! 🙂
obrigado.
Isso me ajudou muito, muito obrigado!
Ótimo! Funciona perfeitamente… Eu só queria visualizá-lo na área de administração e apenas os dois primeiros códigos resolvem!
Olá,
Obrigado pelo código, funciona perfeitamente sem o cache ativado…
Mas, como posso fazê-lo funcionar com o wp rocket?
Por favor…
Alguém sabe como formatar ou truncar os números? Então, em vez de 4445 visualizações, seriam 4.445 ou 4,5 mil?
Você pode querer usar funções PHP como round() e number_format() para este caso de uso.
Olá, de alguma forma meu código funciona bem, mas está incrementando +2 a cada vez, as visualizações vão de 0, 2, 4, 6. O que tem sido irritante, por favor, ajude. Coloquei o código e a parte de mostrar as visualizações de postagem em uma função que tem uma ação após o conteúdo. O contador funciona, apenas que está em múltiplos de 2.
Você pode querer verificar para ter certeza de que esta função, setPostViews(get_the_ID()), só é adicionada uma vez. Qual hook você está usando?
O funcionará no cache lightspeed?
Código aparecendo na página inicial
Ops, desculpe, por favor, desconsidere meu comentário anterior. Percebi que estava chamando a função setPostViews várias vezes. Culpa minha…
Depois de corrigir isso, estou vendo a contagem de visualizações aumentar apenas +2 toda vez que atualizo o post individual.
Alguém tem uma solução para isso? Não imagino que isso será um grande problema, considerando que a maioria dos usuários não atualizará a página, embora seria bom ter um número de contagem real para exibir..
Obrigado pelo código 🙂
Como fazer uma contagem aleatória de visualizações entre (600,900)
por favor ajude..
como faço para parar o aumento automático da contagem ao atualizar a página?
Olá, ótimas dicas. Obrigado por compartilhar conosco. Estou usando um plugin e o Google Analytics para rastrear minhas visualizações de página.
Olá,
Quero mostrar a contagem dentro da classe meta, meu código meta é:
como imprimir o contador entre os metadados como autor, data, categorias?