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 6 august 2011 la 22:51

    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 7 august 2011 la 00:35

        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. Recenzie site: WordPress Code Snippets | ButlerBlog 28 iulie 2011 la 23:29

    […] 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 24 iulie 2011 la 10:43

    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. Ahmedsheeraz 21 iunie 2011 la 14:40

    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 28 mai 2011 la 14:10

    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. Kevin Chard 28 mai 2011 la 17:10

      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 4 iulie 2011 la 08:28

        Ș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. Kevin Chard 4 iulie 2011 la 13:29

          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) 2 mai 2012 la 21:09

          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. Kevin Chard 2 mai 2012 la 21:55

             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. Kevin Chard 15 mai 2011, 15:33

        @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. Sfaturi utile, trucuri și tutoriale despre WordPress - Wordpress Arena 13 aprilie 2011, 12:06

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

  17. Afișează numărul de vizite pe articol fără extensie folosind tag-ul meta | Un Blog Presque Parfait 9 aprilie 2011, 09:22

    […] 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. Kevin Chard 29 martie 2011, 12:19

      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. Daniel Tara 28 martie 2011, 09:09

    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. Kevin Chard 28 martie 2011, 12:15

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

  20. 20 de fragmente și trucuri suplimentare pentru codul WordPress 28 martie 2011, 04:02

    […] 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. Kevin Chard 23 martie 2011, 11:58

      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. Kevin Chard 20 martie 2011, 14:33

      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. Kevin Chard 20 martie 2011, 17:08

      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. Towfiq Ahmed 19 martie 2011, 12:34

    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. Kevin Chard 19 martie 2011, 14:41

      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. Towfiq Ahmed 19 martie 2011, 18:03

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

    3. Kevin Chard 19 martie 2011, 18:31

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

  24. Towfiq Ahmed 19 martie 2011, 12:26

    Trebuie să le setez manual?:/

    1. Kevin Chard 19 martie 2011, 14:52

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

  25. Towfiq Ahmed 19 martie 2011, 12:20

    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!