Stai cercando un modo per tracciare le visualizzazioni dei post senza un plugin utilizzando i metadati dei post? Sebbene probabilmente esista un plugin per questo, abbiamo creato un rapido snippet di codice che puoi utilizzare per tracciare le visualizzazioni dei post senza un plugin utilizzando i metadati dei post in WordPress.
Istruzioni:
Aggiungi questo codice al file functions.php del tuo tema o in un plugin specifico per il sito:
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);
Facoltativamente, aggiungi anche questo codice a una colonna nell'area di amministrazione di WordPress che visualizza le visualizzazioni dei 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());
}
}
Questa parte del codice di tracciamento delle visualizzazioni imposterà le visualizzazioni dei post. Posiziona semplicemente questo codice di seguito all'interno del file single.php all'interno del Loop di WordPress.
<?php
setPostViews(get_the_ID());
?>
Nota sulla cache dei frammenti: Se stai utilizzando un plugin di caching come W3 Total Cache, il metodo sopra per impostare le visualizzazioni non funzionerà poiché la funzione setPostViews() non verrebbe mai eseguita. Tuttavia, W3 Total Cache ha una funzionalità chiamata fragment caching. Invece di quanto sopra, usa quanto segue in modo che setPostViews() venga eseguito correttamente e tracci tutte le tue visualizzazioni dei post anche quando hai la cache abilitata.
<!-- mfunc setPostViews(get_the_ID()); --><!-- /mfunc -->
Il codice seguente è facoltativo. Usa questo codice se desideri visualizzare il numero di visualizzazioni all'interno dei tuoi post. Posiziona questo codice all'interno del Loop.
<?php
echo getPostViews(get_the_ID());
?>
Nota: Se questa è la prima volta che aggiungi snippet di codice in WordPress, consulta la nostra guida su come copiare / incollare correttamente snippet di codice in WordPress, in modo da non rompere accidentalmente il tuo sito.
Se ti è piaciuto questo snippet di codice, prendi in considerazione la possibilità di consultare i nostri altri articoli sul sito come: 10 migliori plugin per testimonianze di WordPress e come impostare il tracciamento dell'autore in WordPress con Google Analytics.
Ops, scusa, per favore ignora il mio commento precedente. Mi sono reso conto che stavo chiamando la funzione setPostViews più volte. Colpa mia….
Dopo aver risolto questo problema, vedo il conteggio delle visualizzazioni aumentare solo di +2 ogni volta che aggiorno il singolo post del blog.
Qualcuno ha una soluzione per questo? Non immagino che sarà un grosso problema considerando che la maggior parte degli utenti non aggiornerà effettivamente la pagina, anche se sarebbe bello avere un numero di conteggio effettivo da visualizzare.
Grazie per il codice 🙂
Come creare un conteggio casuale delle visualizzazioni da (600,900)
per favore aiutami..
come posso interrompere l'aumento automatico del conteggio al refresh della pagina?
Ehi, ottimi consigli. Grazie per averli condivisi con noi. Sto usando un plugin e Google Analytics per monitorare le visualizzazioni delle mie pagine.
Ciao,
Voglio mostrare il conteggio all'interno della classe meta, il mio codice meta è:
come stampare il contatore tra i meta come autore, data, categorie?
Ciao,
Sai qual è il nome del campo standard PHP/wp per le visualizzazioni dei post? Voglio solo visualizzare quello, semplice.
Grazie.
Risk Manager
ci provo ma non funziona per me.
Se ne ho bisogno solo di 5 dovrei cambiare?
Dove appariranno le visualizzazioni dei post?
Nella posizione in cui inserisci il codice nel tuo template dal passaggio 2.
echo getPostViews(get_the_ID());puoi inserirlo all'interno di qualche html e stilizzarlo se lo desideri. Ma i dati vengono salvati nei metadati del post, dovresti essere in grado di vederlo quando modifichi un post nella sezione campi personalizzati.w3t cache rende disponibile la cache dei frammenti solo nella versione pro $$$
Buon pomeriggio,
Lo snippet funziona benissimo, ma ho bisogno di resettare il valore.
Qualcuno potrebbe aiutarmi, per favore.
Ho provato questo ma non funziona – UPDATE wp_postmeta SET meta_value = ‘0’ WHERE wp_postmeta.meta_key =’post_views_count’
Grazie
puoi resettare andando nel database del tuo sito web, cerca postmeta, cliccaci sopra e cerca post_view_count ed eliminali tutti
Mi dispiace ma non riesco a trovare questo campo nel mio database, per favore spiega come resettare i contatori a 0. Grazie
Il post meta si trova sotto la tabella wp_postmeta. Se nessuna delle righe nella colonna meta_key ha post_views_count come valore, allora è possibile che il conteggio non sia ancora stato memorizzato nel database.
Ciao ragazzi, Se qualcuno cerca di contare le visite per indirizzo IP, per contare una sola visita per ogni visitatore, questo è il codice giusto da usare. Spero funzioni bene per voi, queste sono le mie modifiche alla funzione “setPostViews”:
function setPostViews($postID) { session_start(); $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{ if(!isset($_SESSION[‘post_views_count-‘. $postID])){ $_SESSION[‘post_views_count-‘. $postID]=”si”; $count++; update_post_meta($postID, $count_key, $count); } } }
Basta sostituire questa funzione con la vecchia funzione e Fatto!!
non funziona
Grazie mille. Il codice funziona per me :)
Ciao Lo sto usando ed è fantastico, ma sto riscontrando un problema fastidioso Conta due volte nei tipi di post personalizzati.
Non so cosa fare per risolvere, qualche aiuto?
Hai inserito la funzione setPostViews() all'interno del template single.php o di un altro template?
Ho esattamente lo stesso problema! Sì, l'ho inserito solo nel file single.php... uso questo plugin icm wp car manager... Conta anche per 2 4 6 ad ogni visita.
Questo è uno snippet utile. Grazie per averlo condiviso!
Ho modificato la funzione e ho aggiunto il controllo se c'era una sessione attiva per la visita del post e quindi... eccola;
function wpb_set_post_views($postID) { session_start(); $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{ if(!isset($_SESSION['post_views_count-'. $postID])){ $_SESSION['post_views_count-'. $postID]='si'; $count++; update_post_meta($postID, $count_key, $count); } } }
e a cosa servirebbe? qualcosa in particolare?
Sto ricevendo un doppio conteggio per ogni visualizzazione. Quando il post viene visualizzato, aggiunge due visualizzazioni invece di una.
Ho lo stesso problema. Qualcuno ha idea di quale sia il problema?
in quale file del template stai inserendo la funzione setPostViews()?
single.php
Ho provato a inserire setPostViews() sia all'interno che all'esterno del loop, ma non sono riuscito a risolvere il problema.
Ho lo stesso problema...
Questo funziona chiamando la funzione set views che aggiunge i meta del post, quindi a meno che non venga chiamata due volte, otterresti solo 1 visualizzazione. Ti consiglio di controllare il tuo tema per assicurarti che non ci siano loop multipli o altro coinvolto. Tuttavia, a meno che non potessi vedere il single.php del tuo tema, non potrei essere sicuro di quale sia il problema esatto.
Ho lo stesso problema anche io. In single.php, sia all'interno che all'esterno del loop, conta 2 ogni volta che ricarico la pagina...
Questo è anche il mio tema personale...
Ho notato però che ho creato un template di post personalizzato, lo tengo fuori dal loop appena sotto il tag body, e conta solo una volta quando ricarico la pagina...
Ho anche provato a metterlo nell'head dell'header.php e conta una sola volta anche lì... l'unica volta in cui questo non funziona correttamente è quando guardo il dominio.com/blog e lo ricarico da lì, il primo post nel feed del blog conta una volta...
vabbè, posso gestirlo... grazie ancora per il codice...
Potresti voler controllare se setPostViews(); viene in qualche modo chiamato due volte, ad esempio se il tema sta chiamando il codice del template due volte.
Non riesco a farlo funzionare con W3 Total Cache. C'è un modo per farlo funzionare o è assolutamente impossibile?
Qualcun altro ha problemi a far funzionare il contatore? Sto usando WordPress 4.2 e ho installato W3 Total Cache. Il conteggio rimane a 0 indipendentemente da cosa (utente loggato, utente non loggato, refresh della pagina, cache svuotata).
Sto solo cercando di far funzionare il conteggio tramite il backend. Qualsiasi idea sarebbe molto apprezzata.
anch'io!
Hai risolto questo?. Penso di poterti aiutare.
fantastico, come posso farlo contare solo le visualizzazioni dei post di oggi
grazie
Funziona benissimo in single.php, ma per quanto riguarda category.php. Se aggiorni la pagina tutti i post aggiungono una visualizzazione, dovrebbe recuperare il numero reale delle visualizzazioni dei post.
Hai già capito come fare? Sto usando WP 5.2.2 e ottengo +2 conteggi al refresh... A parte questo sembra che funzioni...
funziona benissimo, esattamente quello che volevo. grazie per aver condiviso fratello.
Ciao!
Prima di tutto, grazie per questo script, è stato molto utile.
Ho una domanda, ho questo snippet in un tema personalizzato che sto sviluppando per ridisegnare/ricodificare il mio portfolio e ho scoperto che nei custom-post il contatore viene visualizzato, ma quando sono in wp-admin non mostra il numero di visite che ho come fa nei post normali.
Hai qualche idea su come risolvere questo problema?
Grazie.
Bello!! Grazie per lo script!! Molto Bene!!
questo conta solo le mie visualizzazioni come faccio a farlo contare le visualizzazioni di tutti?
Guardando il codice nel post, dovrebbe assolutamente tracciare le visualizzazioni di ogni visitatore.
O non hai assolutamente visitatori (sembra improbabile), oppure hai inserito la chiamata alla funzione setPostViews() all'interno di un blocco condizionale che si attiva solo se l'utente è connesso o è un amministratore della pagina.
Grazie per lo script. C'è un modo per visualizzare, ad esempio, i 5 post più visti?
Finalmente qualcosa di semplice e funziona molto bene, grazie