X

Cum să urmăriți vizualizările postărilor fără un plugin folosind Post Meta

Fragmente de IsItWP

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.

Comentarii   Lasă un răspuns

  1. Aveți vreo idee cum să folosesc asta cu un Tip de Postare Personalizat?

  2. lucruri grozave exact ce căutam?

    1. cool mă bucur să aud că îți place fragmentul, bucură-te.

      1. La fel, putem număra numărul de imagini încărcate pe site-ul WordPress, sunt sigur că putem.. aveți vreo idee?

  3. Exemplu cu Bob este posibil?

    Cele mai vizualizate postări
    Titlu postare3 100 vizualizări
    Titlu postare1 50vizualizări
    Titlu postare2 10 vizualizări

  4. care este impactul utilizării acestei funcții asupra bazei de date WordPress.. voi putea șterge logurile (vizualizările) la intervale stabilite.. ??

    1. Acesta nu este un plugin cu multe funcționalități, pur și simplu va incrementa contorul din meta postării cu unu de fiecare dată când postarea este vizualizată.

  5. cum să elimin  cuvântul „Vizualizări” ?                       

    1. Salut Joj,
      Veți vedea pe linia 09    return $count.’ Views’;
      înlocuiți acea linie cu cea de mai jos și asta e tot.
      return $count;

  6. Mulțumesc pentru fragment. Am modificat ușor setPostViews() pentru a scădea vizualizările postărilor de la Editori sau mai sus:

    function setPostViews($postID) { if (!current_user_can('level_7') ) :     $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);     } endif; }

    1. Mulțumesc drew, foarte tare.

    2. Nu funcționează pentru mine pe localhost. Nu știu de ce, dar fiecare vizualizare, indiferent dacă este la nivel de Editor sau mai sus, este numărată.

      Apropo, cum ați dezactiva numărarea vizualizării de către autorul postării?

      1. Ups. Nu eram logat ca administrator în timpul testării. (facepalm)

        1. Mă bucur să aud că ați rezolvat problema.

  7. Gabriel Merovingi August 6, 2011 at 10:51 pm

    Salut Kevin!

    Am încercat acest cod pe o instalare WP 3.2 nouă și funcționează bine. Am observat însă că, deși ar trebui să crească numărul cu 1, la mine crește cu 4. Aveți sugestii despre ce ar putea fi greșit? 

    Am configurat funcțiile în locul potrivit și singura modificare pe care am făcut-o a fost să exclud numărătoarea de la vizitatorii logați. Chiar și fără această modificare, codul dă 4 vizualizări în loc de 1.

    1. Huh, ar trebui să numere doar cu unu, din moment ce este doar count++ ați avut pe cineva altcineva să vă viziteze site-ul în timp ce rula sau mai multe file deschise?

      1. Gabriel Merovingi August 7, 2011 at 12:35 am

        Este pe localhost-ul meu. Este foarte ciudat, dar s-ar putea să fie doar o problemă de browser. Mulțumesc totuși pentru un mic fragment util!

      2. Kevin, În primul rând, îmi place simplitatea acestei soluții! Am codul funcționând corect pe serverul meu local, dar am observat că atunci când reîncarc pagina principală (care conține cele mai recente 5 intrări ale mele), fiecare reîncărcare a paginii principale adaugă o vizualizare la numărul pentru fiecare dintre cele 5 postări. Există vreo modalitate de a evita acest lucru și de a număra doar vizualizările paginii articolului propriu-zis? Mulțumesc

        1. Salut Rgsanchezz, mă bucur să aud că îți place fragmentul. În ceea ce privește întrebarea ta, asigură-te că plasezi setPostViews(get_the_ID()); în interiorul șablonului single.php sau în interiorul if(is_singular()) ar trebui să funcționeze și dacă nu folosești un șablon single.php, acest lucru ar trebui să rezolve problema.

    2. Ai folosit acest fragment într-un buclă separată? Dacă da, ar trebui să plasezi setPostViews(get_the_ID()); în afara buclei „cele mai vizualizate”, astfel încât să numere +1 doar pentru postarea afișată în prezent și nu pentru toți din listă. De exemplu:

      GREȘIT:

             
             
              ( )        CORECT:                                ( )       

      1. Scuze, am copiat codul în caseta de răspuns. Link scurt prin codepad, verificați-l acolo : ) http://codepad.org/QOUWc3XB

  8. Este doar o farsă, nimic altceva, frate. Dacă verifici în Firefox, va apărea, dar dacă verifici URL-ul tău în Chrome și IE, nu se afișează acolo. Când verifici în Firefox, va afișa doar vizualizările tale, nimic altceva... și dacă crezi că este problema mea, spune-mi.

    1. Salut Sunnysuffy, ei bine, fragmentul nu este o farsă, totuși, dacă ai software de caching activ pe copia ta de WordPress, ar avea probleme în a funcționa. Supercache, etc.

  9. Site Review: WordPress Code Snippets | ButlerBlog July 28, 2011 at 11:29 pm

    […] un bun exemplu de genul sfaturilor pe care le vei găsi pe wpsnipp.com este „Urmărește vizualizările postărilor fără un plugin folosind meta postărilor.”  Kevin începe prin a descrie ce va realiza fragmentul, apoi îți oferă un […]

  10. tasarhane designhouse July 24, 2011 at 10:43 am

    hei, e fain..
    mulțumesc mult.

    1. Fain, mă bucur că îți place fragmentul. 

  11. uimitor, mulțumesc!

    1. nicio problemă @4f9649a2dc0c5d186623a62544564bfe:disqus mă bucur că îți place fragmentul!

  12. Este de pris să spunem că acesta este un fragment grozav. Dar dacă există o soluție pentru a-l face să funcționeze cu plugin-uri de caching, de exemplu cu W3TC, ar fi și mai bine.

    Oricum, treabă bună!

    1. Nu am analizat asta, voi arunca o privire mai atentă la unele dintre plugin-uri și voi vedea ce pot face. Mă bucur totuși că îți place fragmentul. 

      1. Hei Kevin, am navigat prin forumuri pentru a găsi o soluție. Aparent, mulți oameni au probleme cu excluderea funcțiilor din caching. Din păcate, se pare că nu există încă nicio soluție. Sunt sigur că există. Să sperăm că unul dintre noi va găsi ceva curând :)

    2. Salut, din câte știu W3TC are o opțiune „Ignored query stems” pentru a filtra anumite funcții din cache.

  13. Salut, informații utile, este posibil să folosesc echo getPostViews(get_the_ID()); în secțiunea de postări din panoul de administrare dacă vreau să folosesc vizualizările postărilor doar în scopuri personale/administrative?

    1. Da, poți, am postat un fragment nu cu mult timp în urmă tocmai din acest motiv. http://wpsnipp.com/index.php/functions-php/display-post-views-within-admin-post-columns/

  14. Andrei Oprinca May 28, 2011 at 2:10 pm

    Acest lucru este grozav, funcționează strălucit. Îl voi folosi pe un nou site de imagini de fundal la care lucrez. Mi-am notat site-ul tău pentru funcții pentru referințe viitoare.

    Mă întreb dacă se poate face ceva pentru a înregistra doar 1 vizualizare pe sesiune pentru fiecare utilizator. Ar fi grozav pentru a preveni vizualizările „false” la reîmprospătarea paginii. Dacă cineva poate face asta (dacă este posibil), ar fi grozav.

    1. Mulțumesc @6c9628c836d0d3ed67e8ef3b43a993dd:disqus Mă bucur să aud că îți place fragmentul! Sunt sigur că s-ar putea face ceva de genul acesta, totuși aș folosi asta ca metodă de a urmări popularitatea unei postări, mai degrabă decât pentru statistici detaliate.

  15. Am o problemă cu asta, dacă vizualizez a doua cea mai nouă postare, cea mai nouă postare primește 1 vizualizare adăugată, aveți vreo idee de ce?

    1. Singurul motiv la care mă pot gândi este că nu ai funcția setPostViews(get_the_ID()); în single.php? poți confirma că acesta este cazul…

      1. Da, este în single.php în buclă

        1. Am aceeași problemă după ce am configurat o listă de postări populare în bara laterală, folosind articolul „cele mai populare postări folosind meta postărilor vizualizate”. setPostViews(get_the_ID());  este în single.php. setPostViews(get_the_ID());  este în single.php. 

      2. Samuel Francisco July 4, 2011 at 8:28 am

        Și eu am o problemă aici. A mea este în single.php, am urmat instrucțiunile. Cu toate acestea, observ că dacă vizitez o postare (cu un ID de postare să zicem 20), o altă postare (cu un ID de postare să zicem 22) primește și ea +1 la numărul de vizualizări. Lucrul ciudat este că, atunci când afișez ID-ul postării primit de funcția setPostViews, pe ecranul meu apare doar ID-ul postării 20.

        1. Ei bine, ar trebui să funcționeze fără probleme, totuși, dacă editați postările, puteți vedea câmpul personalizat adăugat cu vizualizările curente ale postării. Aș reîncărca pagina respectivă și aș vedea dacă câmpul personalizat se actualizează pe ambele postări. Ce versiune de WordPress folosiți în prezent?

        2. Chris (4O1! Creative) May 2, 2012 at 9:09 pm

          Am avut aceeași problemă. Mi-a luat o eternitate să-mi dau seama. Problema este cauzată de Wordpress care încarcă linkurile relaționale pentru postările anterioare și următoare în antet. Firefox, în mod implicit, preîncarcă linkurile REL cu valoarea "Next", astfel încât ambele postări sunt "vizualizate".
          Soluția pe care am găsit-o a fost să elimin acțiunea care adaugă această funcționalitate la funcția wp_head:  remove_action( ‘wp_head’, ‘adjacent_posts_rel_link_wp_head’, 10, 0); 

          1.  Chris, mulțumesc pentru comentariu. Am actualizat postarea pentru a informa și pe alții despre această soluție pentru problemă. Am adăugat și un link către site-ul tău. Mulțumesc din nou,

    2. Salut Wprebel, Este posibil să aveți un plugin sau altceva care a cauzat o problemă cu fragmentul. Fragmentul este destul de simplu și doar actualizează meta postării atunci când un utilizator încarcă postarea, nu prea multe lucruri care să meargă prost. Fără a vă analiza tema în detaliu, aș ghici doar.

    3.   @e4fcff6cc58dc5e1b2ab556d9cdb2cb2:disqus trebuie să utilizați funcția getPostViews() atunci când doriți să afișați vizualizările postării și setPostViews() pe single.php.

  16. Helpful Tips, Hacks and Tutorials about WordPress - Wordpress Arena April 13, 2011 at 12:06 pm

    […] Urmăriți vizualizările postărilor fără un plugin folosind meta postărilor […]

  17. Afficher le nombre de visite par article sans extension en utilisant la balise meta | Un Blog Presque Parfait April 9, 2011 at 9:22 am

    […] Prin : lien […]

  18. Această tehnică nu va funcționa cu plugin-uri de cache. Aș dori să folosesc plugin-ul WP-PostViews, deoarece oferă o compatibilitate mai bună cu plugin-urile de cache.

    1. Acest lucru este adevărat, nu funcționează bine cu plugin-urile de cache. Cu toate acestea, ca un fragment rapid pentru a urmări vizualizările, funcționează destul de bine.

  19. Aș redenumi cheia meta post_views_count în _post_views_count pentru a o face ascunsă, pentru a evita ca utilizatorii să editeze vizualizările postărilor din câmpurile personalizate.

    1. Ahh, idee bună Daniel, ai putea face asta.

  20. 20 More WordPress Code Snippets and Hacks March 28, 2011 at 4:02 am

    […] doriți să afișați numărul de vizualizări: <?php echo getPostViews(get_the_ID()); ?> Sursă → Urmăriți cantitatea de vizualizări ale postărilor folosind meta postărilor Acest fragment va crea o listă a celor mai populare postări ale dvs. […]

  21. Există o modalitate de a face o prezentare generală a celor mai vizualizate postări?
    La fel ca cele populare din bara laterală, dar folosind vizualizările postărilor în loc de comentarii?

    1. Salut Alec,
      Tocmai am terminat o postare pentru asta ieri și o voi publica în aproximativ o oră.

    2. Prima dată când vizitez site-ul tău, și deja eroul meu! +1

  22. Este posibil să se facă o listă a celor mai vizualizate postări pe baza acestui cod?

    1. Nu sunt sigur dacă înțeleg, poți intra în puțin mai multe detalii.

    2. Exemplu:
      Cele mai vizualizate postări
      Titlu postare3 100 vizualizări
      Titlu postare1 50 vizualizări
      Titlu postare2 10 vizualizări

    3. Salut Bob,
      Da, m-am gândit să fac ceva de genul acesta, voi experimenta puțin cu ideea și voi posta un fragment.

  23. Tocmai am găsit acest post. http://www.moocr.com/blog/posts/2010/display-posts-views-count-without-plugin-in-wordpress.html

    Am făcut ce a spus tipul. Nu pare să funcționeze. Funcționează pe localhost?

    1. Ar trebui să funcționeze bine pe localhost, însă va trebui să reîncărcați pagina pentru a vedea vizualizările. Nu uitați să plasați setPostViews în buclă, în fișierul single.php. L-am testat pe wpsnipp.com pentru a urmări vizualizările și a funcționat bine. Ce face fragmentul este să adauge un număr la meta postării și apoi să îl incrementeze de fiecare dată când se încarcă fișierul single.php. Ce versiune de WordPress folosiți?

    2. Mulțumesc. Tocmai am aflat că nu îl implementam corect.

    3. Super, mă bucur că ai rezolvat totul perfect...

  24. Trebuie să le setez manual?:/

    1. Da, ar trebui să adăugați acest cod manual în șabloanele WordPress.

  25. O distribuire grozavă, Chad. Mulțumesc 😀

Adaugă un comentariu

Suntem bucuroși că ați ales să lăsați un comentariu. Vă rugăm să rețineți că toate comentariile sunt moderate conform politicii noastre de confidențialitate, iar toate linkurile sunt nofollow. NU folosiți cuvinte cheie în câmpul nume. Să avem o conversație personală și semnificativă.

Lista de verificare pentru lansarea WordPress

Lista de verificare finală pentru lansarea WordPress

Am compilat toate elementele esențiale de verificare pentru lansarea următorului dvs. site WordPress într-o singură carte electronică la îndemână.
Da, trimite-mi eBook-ul gratuit!