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. Hàng xách tay April 6, 2013 at 2:45 am

    mulțumesc

  2. Am adăugat remove_action(), dar tot adaugă 1 la numărul de vizualizări pentru postarea recentă când deschid oricare dintre postări. Vă rog ajutați-mă.

  3. Hei, mulțumesc, omule! Dar nu obțin imaginea cu vizualizări așa cum o arăți aici. Mă poți ajuta cu asta pentru a obține și imaginea.

  4. Tam Nguyen Photography February 1, 2013 at 11:13 pm

    Am constatat că acest fragment de cod nu corespunde cu ceea ce văd în statisticile Jetpack. Mai are cineva aceeași problemă?

  5. numără doar vizualizările unice, cum să îl schimb să numere fiecare vizualizare (fiecare reîmprospătare)

  6. Sfaturi grozave! Mulțumesc mult.

  7. Sfaturi grozave! Mulțumesc pentru distribuire. Aș avea totuși nevoie de puțin mai mult ajutor.
    Aș dori să afișez cele mai populare postări doar pentru ultima săptămână sau lună? Poate cineva să ajute? Mulțumesc

  8. Fragment grozav. Funcționează grozav.

    Știi dacă este posibil să ai acum o listă de „Categorii cele mai populare”, bazată pe categoriile postărilor cele mai vizualizate?

  9. Am încercat acest cod, inserează numărul, dar afișează același număr pentru toate postările, chiar dacă am adăugat

    remove_action( ‘wp_head’, ‘adjacent_posts_rel_link_wp_head’, 10, 0);
    Idei?

  10. Acest lucru pare să funcționeze, dar văd o problemă în cazul meu specific… Folosesc acest cod într-un widget de bară laterală (adăugând numărul de citiri la o interogare de postări recente):

    $args = array( ‘numberposts’ => 3, ‘order’=> ‘ASC’, ‘orderby’ => ‘title’ );
    $postslist = get_posts( $args );
    foreach ($postslist as $post) : setup_postdata($post);
    setPostViews(get_the_ID()); ?>

    Văd două lucruri:

    – Cele trei postări listate arată mereu un număr incremental una față de cealaltă (postarea 1 = 0 vizualizări, 2 = 1 vizualizare, 3 = 2 vizualizări). Nu sunt sigur că este corect.
    – Când reîmprospătez pagina, toate acestea au 3 adăugate la număr (0, 1 și 2 arată acum 3, 4 și 5). Am adăugat codul remove_action în functions.php, dar se pare că nu a avut niciun efect.

    Nu sunt sigur care ar putea fi cauza….

  11. când creez o filă nouă în Firefox și se incrementează cu 1, dar reîmprospătez pagina, se incrementează cu 2.
    Are cineva aceeași problemă? De ce se întâmplă? Din cauza browserului?

  12. Justin W Hall May 31, 2012 at 11:53 pm

    hmmmmmm, cum pot scădea cu unu după, să zicem, 24 de ore de la incrementare?

    1. Lasă-mă să văd dacă am înțeles corect, vrei să scazi câte o vizualizare la fiecare 24 de ore?

      1. Da, pentru fiecare accesare, scade o accesare după 24 de ore. Ai înțeles? Am ajuns să folosesc un cron job. Dacă ai o soluție mai ușoară. Sunt tot ochi.

        1. un cron este cea mai bună metodă, o altă metodă s-ar baza pe vizualizările paginii pentru a decrementa și ar putea rămâne mult în urmă.

  13. WordPress Users: How to Increase Functionality AND Speed Up Your Site - ManageWP May 31, 2012 at 11:00 am

    […] Urmăriți vizualizările postărilor folosind meta postării […]

  14. mulțumesc omule pentru munca ta.. este grozavă

  15. muncă grozavă
    pot să primesc codul 
    pentru a afișa cele mai vizualizate postări într-un widget sau pagină 
     

  16. Kevin,
    Acest script poate fi folosit pentru tipuri de postări personalizate?

    1.  Salut Rafa, ar trebui să poți folosi asta fără probleme.

    2.  Ok, voi încerca.  Cum facem ca numărul de vizualizări să fie afișat pe coloanele postărilor din adminul CPT?

      Mulțumesc!

      1. Mi-am rezolvat problema, a trebuit să adaug „post_type=any” la interogare și acum văd toate tipurile mele de postări personalizate.

  17. Grozav! Mulțumesc pentru cod, pare să funcționeze grozav.

  18. Bhaskar Relan March 9, 2012 at 6:27 pm

    Mulțumesc mult, dragă… O treabă grozavă….

    1.  Ieri am spus că funcționează… dar cumva, când dăm clic pe postare, se calculează corect, dar când mergem la a doua cea mai recentă postare și apoi la cea mai recentă postare, numărul pentru cea mai recentă postare este incrementat cu 2. Un model similar poate fi văzut cu trei.

      În cazul a trei postări, dacă mergem la a treia cea mai recentă postare, aceasta va fi incrementată cu 1, dar când mergem la a doua cea mai recentă postare, aceasta este incrementată cu 2, iar apoi mergem la cea mai recentă postare, aceasta este, de asemenea, incrementată cu 2.

      Ar fi grozav dacă cineva ar putea ajuta cu această problemă.

      1. și eu, fiecare postare este incrementată cu 2. de ce???

  19. funcționează pe Chrome, Firefox, dar în Safari, când reîmprospătăm pagina, numărul de vizualizări crește cu 2, există o soluție, a testat cineva pe Safari?

    1. am găsit problema, o linie de cod jquery o face să numere de două ori la reîmprospătare, nu știu de ce, dar am rezolvat-o.

      1. Bună, am aceeași problemă. Mă poți ajuta cum ai rezolvat-o, te rog? La mine numără de două ori în toate browserele.

  20. Bună tuturor !!

    Sfaturi grozave! Mulțumesc mult.

    Mă întrebam dacă putem adăuga date despre „timp”?
    Pentru că aș dori să afișez vizualizările de ieri/acum 2 zile/acum 3 zile etc… ?

    1. wp_get_archives vă permite să definiți o perioadă scurtă de timp, ceva de genul acesta cred că ar fi util.
       
      http://codex.wordpress.org/Function_Reference/wp_get_archives

      1. Ok, știu ce vrei să spui, dar nu este exact ceea ce vreau.
        Aș dori să fac un fel de grafic.
        Pentru a face o funcție care să arate dacă postarea are vizualizări pozitive sau negative. Deci vreau să compar vizualizările de ieri și de azi.

        1. Ei bine, asta este mult mai complex, aș sugera ceva mai simplu, ia un plugin ca acesta.

          http://wordpress.org/extend/plugins/official-statcounter-plugin-for-wordpress/

  21. Salut Kevin – Super treabă 😉 O întrebare rapidă: Funcționează perfect pentru mine, dar numărătoarea începe de la 0. Este posibil să recuperez vizualizările pe care le aveam deja la postări? mersi

    1.  Salut Hugo,
      Ei bine, fragmentul se salvează în post meta, deci dacă ai fi eliminat fragmentul și apoi l-ai fi adăugat din nou, ar trebui să continue de la ultimele valori. Cu toate acestea, poți oricând să editezi câmpurile personalizate pentru a schimba valorile.

  22. Bună 
    Kevin Chard , vin din Vietnam, engleza mea nu este bună 🙁
    Am o întrebare 🙂 : cum să afișez vizualizările postărilor doar pentru administrator (doar administratorul poate vedea vizualizările postărilor) 😀
    Poți trimite codul prin emailul meu 😀

    1.  acest fragment va afișa vizualizările postărilor în coloana postărilor din administrator. Cu toate acestea, dacă doriți să afișați pe site, dar numai pentru administratori, puteți face doar acest lucru.

      if(is_admin()){
            echo getPostViews(get_the_ID());
      }

      1. Kevin, cum îl pot configura astfel încât să numere doar vizitatorii care nu sunt administratori? Aceasta nu este o problemă de afișare, ci de numărare. Sunt sigur că !is_admin() intră în joc, dar nu știu unde? Mulțumesc pentru fragmentele grozave, apropo.

        1. Acest lucru ar trebui să funcționeze pentru tine, înlocuiește doar codul de la pasul unu cu următorul.
           
          if(!current_user_can(‘administrator’)){
                echo setPostViews(get_the_ID());
          }

  23. Cum putem afișa vizualizările postărilor doar în pagina de administrator unde sunt afișate toate postările. Mă refer la pagina edit.php

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

    1. Christopher McMahon January 8, 2012 at 10:48 am

      Editează Linia 9

  25. Mulțumesc, îl folosesc pe un site NOU și funcționează strălucit….

    Învăț PHP din mers, așa că codul tău m-a învățat câteva lucruri.. MULȚUMESC DIN NOU…

    1. Super Zaid, mă bucur să aud că îți place site-ul și sper să te bucuri de secțiuni!

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!