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.
grazie
Ho aggiunto remove_action(), ma aggiunge comunque 1 conteggio al post recente quando apro uno qualsiasi dei post. Aiuto per favore.
Ehi, grazie amico! Ma non ottengo l'immagine con le visualizzazioni come mostri qui. Puoi aiutarmi a ottenere anche l'immagine.
Ho scoperto che questo snippet di codice non corrisponde a ciò che vedo con le mie statistiche Jetpack. Qualcun altro ha lo stesso problema?
conta solo le visualizzazioni uniche, come cambiarlo per contare ogni singola visualizzazione (ogni aggiornamento)
Ottimi suggerimenti! Grazie mille.
Ottimi suggerimenti! Grazie per aver condiviso. Avrei bisogno di un piccolo aiuto in più, però.
Vorrei visualizzare i post più popolari solo dell'ultima settimana o mese? Qualcuno può aiutare? Grazie
Ottimo snippet. Funziona benissimo.
Sai se è possibile avere ora un elenco "Categorie più popolari", basato sulle categorie dei post più visti?
Ho provato questo codice, inserisce il conteggio ma visualizza lo stesso conteggio per tutti i post, anche se ho aggiunto
remove_action( ‘wp_head’, ‘adjacent_posts_rel_link_wp_head’, 10, 0);
Qualche idea?
Sembra che funzioni, ma vedo un problema nel mio caso particolare... sto usando questo codice all'interno di un widget della barra laterale (aggiungendo il conteggio delle letture a una query degli ultimi post):
$args = array( ‘numberposts’ => 3, ‘order’=> ‘ASC’, ‘orderby’ => ‘title’ );
$postslist = get_posts( $args );
foreach ($postslist as $post) : setup_postdata($post);
setPostViews(get_the_ID()); ?>
Vedo due cose:
– I tre post elencati mostrano sempre un conteggio incrementale l'uno rispetto all'altro (post 1 = 0 visualizzazioni, 2 = 1 visualizzazione, 3 = 2 visualizzazioni). Non sono sicuro che sia accurato.
– Quando aggiorno la pagina, a tutti questi viene aggiunto 3 al conteggio (0, 1 e 2 ora mostrano 3, 4 e 5). Ho aggiunto il codice remove_action a functions.php ma sembra che non abbia avuto alcun effetto.
Non sono sicuro di quale possa essere la causa….
quando creo una nuova scheda in Firefox, si incrementa di 1, ma se aggiorno la pagina, si incrementa di 2.
Qualcuno ha lo stesso problema? perché succede? a causa del browser?
hmmmmmm, come posso diminuire di uno dopo, diciamo 24 ore dall'incremento?
Fammi capire bene, vuoi sottrarre uno da ogni visualizzazione ogni 24 ore?
Sì, per ogni visita, sottrai una visita 24 ore dopo. Capito? Alla fine ho usato un cron job. Se hai una soluzione più semplice. Sono tutt'orecchi.
un cron è il modo migliore, un altro modo si baserebbe sulle persone che visualizzano una pagina per decrementare e potrebbe facilmente rimanere indietro.
[...] Traccia le visualizzazioni dei post utilizzando i meta dei post [...]
grazie amico per il tuo lavoro.. è fantastico
ottimo lavoro
posso avere il codice
per mostrare i post più visti in un widget o pagina
Kevin,
Questo script può essere utilizzato per tipi di post personalizzati?
Ciao Rafa, dovresti essere in grado di usarlo senza problemi.
Ok, ci proverò. Come facciamo a visualizzare i conteggi delle visualizzazioni nelle colonne dei post dell'amministratore CPT?
Grazie!
Ho risolto il mio problema, ho dovuto aggiungere "post_type=any" alla query e ora vedo tutti i miei custom post type.
Fantastico! Grazie per il codice, sembra funzionare benissimo.
Grazie mille caro... Un ottimo lavoro...
Ieri ho detto che funziona... ma in qualche modo quando clicchiamo sul post calcola correttamente ma quando andiamo al secondo post più recente e poi al post più recente il conteggio per il post più recente viene incrementato di 2. Si può vedere uno schema simile con tre.
Nel caso di tre post, se andiamo al terzo post più recente verrà incrementato di 1, ma quando andiamo al secondo post più recente verrà incrementato di 2 e poi andando al post più recente verrà anch'esso incrementato di 2.
Sarebbe fantastico se qualcuno potesse aiutarmi con questo problema.
Anche a me, ogni post viene incrementato di 2. Perché???
funziona su Chrome, Firefox, ma su Safari, quando si aggiorna la pagina il numero di visualizzazioni aumenta di 2, c'è una soluzione, qualcuno ha testato su Safari?
Ho trovato il problema, una riga di codice jquery lo fa contare due volte al refresh, non so perché, ma l'ho risolto.
Ciao, ho lo stesso problema. Puoi aiutarmi a capire come l'hai risolto per favore? Per me conta due volte in tutti i browser.
Ciao a tutti!!
Ottimi consigli! Grazie mille.
Mi stavo chiedendo se possiamo aggiungere dei dati "ora"?
Perché vorrei mostrare le visualizzazioni di ieri/2 giorni fa/ecc...?
wp_get_archives ti permette di definire un breve periodo di tempo, qualcosa del genere penso sarebbe utile.
http://codex.wordpress.org/Function_Reference/wp_get_archives
Ok, capisco cosa intendi, ma non è esattamente quello che voglio.
Vorrei creare una specie di grafico.
Per creare una funzione che mostri se il post ha visualizzazioni positive o negative. Quindi voglio confrontare le visualizzazioni di ieri e di oggi.
Beh, è molto più complesso, ti suggerirei qualcosa di più semplice, prendi un plugin come questo.
http://wordpress.org/extend/plugins/official-statcounter-plugin-for-wordpress/
Ciao Kevin – Ottimo lavoro 😉 Una domanda veloce: funziona bene per me ma il conteggio parte da 0. È possibile recuperare le visualizzazioni che avevo già sui post? Grazie
Ciao Hugo,
Bene, lo snippet salva nei metadati del post, quindi se avessi rimosso lo snippet e poi lo avessi aggiunto di nuovo, dovrebbe continuare dai valori precedenti. Tuttavia, puoi sempre modificare i campi personalizzati per cambiare i valori.
Salve
Kevin Chard , vengo dal Vietnam, il mio inglese non è buono 🙁
Vorrei farti una domanda 🙂 : come visualizzare le visualizzazioni dei post solo per l'amministratore (solo l'amministratore può vedere le visualizzazioni dei post) 😀
Puoi inviare il codice tramite la mia email 😀
questo snippet visualizzerà le visualizzazioni dei post nella colonna dei post nell'area amministrativa. Tuttavia, se vuoi visualizzarlo nel sito ma solo per gli amministratori, puoi semplicemente fare questo.
if(is_admin()){
echo getPostViews(get_the_ID());
}
Kevin, come posso configurarlo in modo che conti solo i visitatori che non sono amministratori? Questo non è un problema di visualizzazione ma di conteggio. Sono sicuro che !is_admin() c'entra qualcosa, ma non so dove? Grazie anche per gli ottimi snippet.
Questo dovrebbe funzionare per te, sostituisci semplicemente il codice del primo passaggio con il seguente.
if(!current_user_can(‘administrator’)){
echo setPostViews(get_the_ID());
}
Come possiamo visualizzare le visualizzazioni dei post solo nella pagina di amministrazione dove vengono visualizzati tutti i post. Intendo la pagina edit.php
Ho pubblicato uno snippet per fare proprio questo.
http://wpsnipp.com/index.php/functions-php/display-post-views-within-admin-post-columns/
come rimuovere la parola “Visualizzazioni” ?
Modifica la riga 9
Grazie, lo sto usando su un NUOVO sito e sta funzionando brillantemente….
Sto imparando PHP al volo, quindi il tuo codice mi ha insegnato un paio di cose.. GRAZIE ANCORA…
Fantastico Zaid, sono contento di sapere che ti piace il sito e spero che ti piacciano gli snippet!