Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /*
- Plugin Name: Licznik odsłon do WordPressa
- Description: Jest to prosty licznik odsłon bazujący na ciasteczku.
- Ciasteczko jest dodane w celu uniknięcia sytuacji, kiedy użytkownik
- ciągle odświeża stronę, co może nabić miliony wyświetleń.
- W skrycie wykorzystano dodatkowe pola użytkownika,
- które integrują się bezpośrednio z danym wpisem lub stroną.
- Jest to tylko wyjściowy szkielet funkcjonalności.
- Możliwość wykorzystania idei jest nieograniczona.
- 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:
- - do ciasteczka należy dodać unikatowy numer (ID) inaczej ciasteczka
- będą się nadpisywać co da błędny odczyt i zamieszanie w bazie;
- - dodać warunek dla pozostałych stron a odsłony zapisywac używając @update_option
- @param $expire (int) - czas wygaśnięcia ciasteczka ustawiony jest na 3600 sekund
- @author: Paweł Nowak
- @link: http://wpsolucje.tk
- @licence: GPL3
- @from WP_Less_is_More 1.1.3
- @Enjoy!
- */
- function CzysteSpalanie_CookieName(){
- return get_queried_object_id() . "_czystespalanie_post_views";
- }
- function CzysteSpalanie_CookieName_d(){
- return "__czystespalanie_post_views__";
- }
- function czystespalanie_set_cookie( $meta_key = null ){
- $val = get_post_meta( get_queried_object_id(), $meta_key, true );
- $expire = time() + 3600;
- if ( !isset ( $_COOKIE [ CzysteSpalanie_CookieName() ] )){
- setcookie ( CzysteSpalanie_CookieName(), $val, $expire );
- }
- if ( is_user_logged_in() and current_user_can('administrator')){
- if ( !isset ( $_COOKIE [ CzysteSpalanie_CookieName_d() ] )){
- setcookie ( CzysteSpalanie_CookieName_d(), 'disabled', $expire + 31556926, "/" );
- }
- }
- }
- function czystespalanie_page_views(){
- $meta_key = '_licznik_odsłon';
- $ip = $_SERVER['REMOTE_ADDR'];
- $_ip = array ();
- czystespalanie_set_cookie( $meta_key );
- // if ( in_array( $ip, $_ip ) )
- // return;
- if( is_user_logged_in() and current_user_can('administrator') )
- return;
- if ( isset ( $_COOKIE [ CzysteSpalanie_CookieName_d() ] ))
- return;
- if ( !isset ( $_COOKIE [ CzysteSpalanie_CookieName() ] )){
- $prev_value = (int) get_post_meta( get_queried_object_id(), $meta_key, true );
- if ( empty( $prev_value ) ) {
- $prev_value = 0;
- }
- update_post_meta( get_queried_object_id(), $meta_key, ++$prev_value );
- }
- }
- add_action( 'template_redirect', 'czystespalanie_page_views');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement