Căutați o modalitate de a urmări vizualizările postărilor fără un plugin, folosind meta-ul postării? Deși probabil există un plugin pentru asta, am creat o scurtă secvență de cod pe care o puteți folosi pentru a urmări vizualizările postărilor fără un plugin, folosind meta-ul postării în WordPress.
Instrucțiuni:
Adăugați acest cod în fișierul functions.php al temei dvs. sau într-un plugin specific site-ului:
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);
Opțional, adăugați și acest cod la o coloană în administratorul WordPress care afișează vizualizările postărilor:
// 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());
}
}
Această parte a codului de urmărire a vizualizărilor va seta numărul de vizualizări ale postării. Plasați acest cod mai jos, în fișierul single.php, în interiorul buclei WordPress.
<?php
setPostViews(get_the_ID());
?>
Notă despre fragment caching: Dacă utilizați un plugin de caching precum W3 Total Cache, metoda de mai sus pentru setarea vizualizărilor nu va funcționa, deoarece funcția setPostViews() nu va fi rulată niciodată. Cu toate acestea, W3 Total Cache are o funcție numită fragment caching. În loc de cele de mai sus, folosiți următoarele pentru ca setPostViews() să ruleze corect și să urmărească toate vizualizările postărilor dvs., chiar și atunci când aveți caching activat.
<!-- mfunc setPostViews(get_the_ID()); --><!-- /mfunc -->
Codul de mai jos este opțional. Folosiți acest cod dacă doriți să afișați numărul de vizualizări în cadrul postărilor dvs. Plasați acest cod în interiorul buclei.
<?php
echo getPostViews(get_the_ID());
?>
Notă: Dacă este prima dată când adăugați secvențe de cod în WordPress, consultați ghidul nostru despre cum să copiați / lipiți corect secvențe de cod în WordPress, pentru a nu vă defecta accidental site-ul.
Dacă v-a plăcut acest fragment de cod, vă rugăm să consultați și celelalte articole de pe site, cum ar fi: cele mai bune 10 pluginuri de testimoniale WordPress și cum să configurați urmărirea autorilor în WordPress cu Google Analytics.
Ups, scuze, vă rog să ignorați comentariul meu anterior. Mi-am dat seama că am apelat funcția setPostViews de mai multe ori. Greșeala mea….
După ce am remediat acest lucru, văd că numărul de vizualizări crește doar cu +2 ori de câte ori reîmprospătez postarea unică de blog.
Are cineva o soluție pentru asta? Nu-mi imaginez că va fi o problemă mare, având în vedere că majoritatea utilizatorilor nu vor reîmprospăta pagina, totuși ar fi frumos să avem un număr real de vizualizări de afișat..
Mulțumesc pentru cod 🙂
Cum să creezi un număr aleatoriu de vizualizări între (600,900)
vă rog ajutați..
cum opresc creșterea automată a numărului la reîmprospătarea paginii?
Hei, sfaturi foarte bune. Mulțumesc că ați împărtășit cu noi. Folosesc un plugin și Google Analytics pentru a urmări vizualizările paginilor mele.
Salut,
Vreau să afișez numărul în interiorul clasei meta, codul meu meta este:
cum să afișez contorul între meta precum autor, dată, categorii?
Salut,
Știi care este numele standard al câmpului PHP/wp pentru vizualizările postărilor? Vreau doar să afișez asta, simplu.
Mulțumesc.
Manager de risc
încerc, dar nu funcționează pentru mine.
Dacă am nevoie doar de 5, ar trebui să schimb?
Unde vor apărea vizualizările postării?
În locația în care plasați codul în șablonul dvs. din pasul 2.
echo getPostViews(get_the_ID());puteți plasa acest lucru în interiorul unui cod HTML și îl puteți stiliza dacă doriți. Dar datele sunt salvate la meta-ul postării, ar trebui să puteți vedea acest lucru atunci când editați o postare în secțiunea câmpuri personalizate.w3t cache face fragment cache disponibil doar în versiunea pro $$$
Bună ziua,
Snippet-ul funcționează excelent, dar trebuie să resetez valoarea.
M-ar putea ajuta cineva, vă rog.
Am încercat asta, dar nu funcționează – UPDATE wp_postmeta SET meta_value = ‘0’ WHERE wp_postmeta.meta_key =’post_views_count’
Mulțumesc
puteți reseta accesând baza de date a site-ului dvs., căutați postmeta, faceți clic pe ea și căutați post_view_count și ștergeți-le pe toate
Scuze, dar nu găsesc acest câmp în baza mea de date, vă rog să explicați cum să resetez contoarele la 0. Mulțumesc
Meta postării se găsește sub tabelul wp_postmeta. Dacă niciunul dintre rândurile din coloana meta_key nu are post_views_count ca valoare, atunci este posibil ca numărul să nu fi fost încă stocat în baza de date.
Salutare, Dacă cineva caută să numere vizitele pe baza adresei IP, pentru a număra o singură vizită pentru fiecare vizitator, acesta este codul corect pentru a face acest lucru, sper să funcționeze bine pentru voi, acestea sunt modificările mele la funcția “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); } } }
Înlocuiți doar această funcție cu funcția veche și Felicitări!!
nu funcționează
Mulțumesc mult. Codul funcționează pentru mine:)
Salut
Îl folosesc și este grozav, dar am o problemă enervantă
Numără de două ori în tipul de postare personalizat.
Nu știu ce să fac pentru a remedia asta, vreo ajutor?
Ați plasat funcția setPostViews() în șablonul single.php sau într-un alt șablon?
Am exact aceeași problemă! Da, l-am plasat doar în fișierul single.php... folosesc acest plugin icm wp car manager... De asemenea, numără cu 2 4 6 la fiecare vizită.
Acesta este un fragment util. Mulțumesc pentru partajare!
Am modificat funcția și am adăugat-o pentru a verifica dacă există o sesiune activă pentru vizita postului și... iată;
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); } } }
și la ce ar folosi asta? ceva anume?
Primesc dublu la fiecare vizualizare. Când vizionez postarea adaugă două vizualizări în loc de una.
Am aceeași problemă. Știe cineva care ar putea fi cauza?
în ce fișier de șablon plasezi funcția setPostViews()?
single.php Am încercat să pun setPostViews() atât în interiorul, cât și în afara buclei, dar nu am reușit să rezolv problema.
Și eu am aceeași problemă…
Funcționează prin apelarea funcției set views care adaugă metadate postării, deci dacă nu este apelată de două ori, vei obține doar o vizualizare. Verifică-ți tema pentru a te asigura că nu sunt implicate bucle multiple sau altceva. Totuși, dacă nu aș vedea fișierul single.php al temei tale, nu aș putea fi sigur care este problema exactă.
Și eu am aceeași problemă. În fișierul single.php, fie în interiorul, fie în afara buclei, numără 2 de fiecare dată când reîmprospătez pagina…
Aceasta este și tema mea personală…
Am observat totuși că am creat un șablon de postare personalizat, îl păstrez în afara buclei, chiar sub tag-ul body, și numără o singură dată când reîmprospătez pagina…
Am încercat și să o pun în antetul fișierului header.php și numără o singură dată și acolo… singurul moment în care acest lucru nu funcționează corect este atunci când mă uit la pagina domain.com/blog și o reîmprospătez de acolo, prima postare din lista blogului numără o singură dată.
ei bine, pot trăi cu asta… mulțumesc din nou pentru cod…
S-ar putea să doriți să verificați dacă setPostViews(); este apelat de două ori, de exemplu, dacă tema apelează codul șablonului de două ori.
Nu reușesc să fac acest lucru să funcționeze cu W3 Total Cache. Există vreo modalitate de a funcționa cu el sau este absolut imposibil?
Mai are cineva probleme în a face contorul să funcționeze? Folosesc WordPress 4.2 și am instalat W3 Total Cache. Numărul rămâne la 0 indiferent de situație (utilizator conectat, utilizator deconectat, reîmprospătare pagină, cache golit).
Mă interesează doar să fac numărătoarea să funcționeze prin backend. Orice idee ar fi foarte apreciată.
și eu!
Ai rezolvat asta?. Cred că te pot ajuta.
fantastic, cum pot face să numere vizualizările postărilor doar astăzi
mulțumesc
Funcționează excelent în single.php, dar cum rămâne cu category.php. Dacă reîmprospătezi pagina, toate postările adaugă o vizualizare, ar trebui să recupereze numărul real de vizualizări ale postării.
Ai rezolvat asta până acum? Folosesc WP 5.2.2 și primesc un contor +2 la reîmprospătare… În afară de asta, pare să funcționeze….
funcționează excelent, exact ce îmi doream. mulțumesc pentru distribuire, frate.
Salut!
În primul rând, mulțumesc pentru acest script, a fost foarte util.
Am o întrebare, am acest fragment într-o temă personalizată pe care o dezvolt pentru a-mi redesena/recoda portofoliul și am constatat că în postările personalizate contorul este afișat, dar când sunt în wp-admin nu arată numărul de vizite pe care îl am, așa cum o face în postările obișnuite.
Ai vreo idee cum să rezolv asta?
Mulțumesc.
Super!! Mulțumesc pentru script!! Foarte bun!!
asta numără doar vizualizările mele, cum pot să fac să numere vizualizările tuturor
Privind codul din postare, ar trebui cu siguranță să urmărească vizualizările pentru fiecare vizitator.
Fie nu ai absolut deloc vizitatori (Acest lucru pare improbabil), fie ai plasat apelul funcției setPostViews() într-un bloc condițional care se declanșează doar dacă utilizatorul este fie conectat, fie este un administrator de pagină.
Mulțumesc pentru script. Există o modalitate prin care putem afișa, de exemplu, cele mai vizualizate 5 postări?
În sfârșit ceva simplu și funcționează foarte bine, mulțumesc