Advertisement
MrPauloeN

Prosty licznik odsłon strony do WordPressa na ciasteczko

May 10th, 2017
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.53 KB | None | 0 0
  1. <?php
  2. /*
  3. Plugin Name:  Licznik odsłon do WordPressa
  4. Description: Jest to prosty licznik odsłon bazujący na ciasteczku.
  5.  
  6.   Ciasteczko jest dodane w celu uniknięcia sytuacji, kiedy użytkownik
  7.   ciągle odświeża stronę, co może nabić miliony wyświetleń.
  8.  
  9.   W skrycie wykorzystano dodatkowe pola użytkownika,
  10.   które integrują się bezpośrednio z danym wpisem lub stroną.
  11.  
  12.   Jest to tylko wyjściowy szkielet funkcjonalności.
  13.   Możliwość wykorzystania idei jest nieograniczona.
  14.  
  15.   Aby licznik odsłon działał dla pozostałej cześci witryny jak np. strona główna, która nie zawsze jest stroną i nie zasze posiada własne meta:
  16.   - do ciasteczka należy dodać unikatowy numer (ID) inaczej ciasteczka
  17.   będą się nadpisywać co da błędny odczyt i zamieszanie  w bazie;
  18.   - dodać warunek dla pozostałych stron a odsłony zapisywac używając @update_option
  19.  
  20.  @param $expire (int)   -   czas wygaśnięcia ciasteczka ustawiony jest na 3600 sekund
  21.  @author: Paweł Nowak
  22.  @link: http://wpsolucje.tk
  23.  @licence: GPL3
  24.  @from WP_Less_is_More 1.1.3
  25.  @Enjoy!
  26.  
  27.  */
  28.  
  29. function CzysteSpalanie_CookieName(){
  30.  
  31.     return get_queried_object_id() . "_czystespalanie_post_views";
  32. }
  33.  
  34. function CzysteSpalanie_CookieName_d(){
  35.  
  36.     return "__czystespalanie_post_views__";
  37. }
  38.  
  39.  
  40. function czystespalanie_set_cookie( $meta_key = null ){
  41.    
  42.     $val = get_post_meta( get_queried_object_id(), $meta_key, true );
  43.    
  44.     $expire = time() + 3600;
  45.  
  46.     if ( !isset ( $_COOKIE [ CzysteSpalanie_CookieName() ] )){
  47.  
  48.         setcookie ( CzysteSpalanie_CookieName(),  $val, $expire );
  49.     }
  50.    
  51.     if ( is_user_logged_in() and current_user_can('administrator')){
  52.  
  53.         if ( !isset ( $_COOKIE [ CzysteSpalanie_CookieName_d() ] )){
  54.  
  55.             setcookie ( CzysteSpalanie_CookieName_d(),  'disabled', $expire + 31556926, "/" );
  56.         }
  57.     }
  58. }
  59.  
  60. function czystespalanie_page_views(){
  61.  
  62.     $meta_key = '_licznik_odsłon';
  63.  
  64.     $ip = $_SERVER['REMOTE_ADDR'];
  65.    
  66.     $_ip = array ();
  67.  
  68.     czystespalanie_set_cookie( $meta_key );
  69.    
  70.     // if ( in_array( $ip, $_ip ) )
  71.         // return;
  72.        
  73.     if( is_user_logged_in() and current_user_can('administrator') )
  74.         return;
  75.    
  76.     if ( isset ( $_COOKIE [ CzysteSpalanie_CookieName_d() ] ))
  77.         return;
  78.  
  79.     if ( !isset ( $_COOKIE [ CzysteSpalanie_CookieName() ] )){
  80.  
  81.         $prev_value = (int) get_post_meta( get_queried_object_id(), $meta_key, true );
  82.  
  83.                 if (  empty( $prev_value ) ) {
  84.  
  85.                     $prev_value = 0;
  86.                 }
  87.         update_post_meta( get_queried_object_id(), $meta_key, ++$prev_value );
  88.     }
  89. }
  90. add_action( 'template_redirect', 'czystespalanie_page_views');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement