Wcześniej pisaliśmy o kodzie, który pozwala wyświetlać liczbę obserwujących na Twitterze, który został udostępniony przez Rarst. W tym artykule podzielimy się bardziej zaawansowanym i eleganckim kodem, który pozwala wyświetlać liczbę obserwujących na Twitterze w WordPress. Po raz kolejny ten skrypt został również udostępniony przez Rarst.
Funkcje
Ta funkcja nie jest ograniczona do liczby obserwujących. Może ona pobrać dowolną nie zagnieżdżoną wartość zwróconą przez metodę API Twitter users/show.
Ma dwa poziomy pamięci podręcznej:
- Zapytane wartości są przechowywane jako tablica w bazie danych, przy użyciu opcji WP, przez $interval sekund;
- Odpowiedzi API są przechowywane w pamięci, dzięki czemu można zapytać o dowolną liczbę pól, bez generowania wielu żądań API.
Powinno to być bezpieczne w użyciu dla wielu wartości i wielu użytkowników jednocześnie, bez obawy o wyczerpanie limitu API.
Poradnik
Najpierw otwórz plik functions. php twojego motywu i dodaj następujący kod:
function rarst_twitter_user( $username, $field, $display = false ) { $interval = 3600; $cache = get_option('rarst_twitter_user'); $url = 'http://api.twitter.com/1/users/show.json?screen_name='.urlencode($username); if ( false == $cache ) $cache = array(); // if first time request add placeholder and force update if ( !isset( $cache[$username][$field] ) ) { $cache[$username][$field] = NULL; $cache[$username]['lastcheck'] = 0; } // if outdated if( $cache[$username]['lastcheck'] < (time()-$interval) ) { // holds decoded JSON data in memory static $memorycache; if ( isset($memorycache[$username]) ) { $data = $memorycache[$username]; } else { $result = wp_remote_retrieve_body(wp_remote_request($url)); $data = json_decode( $result ); if ( is_object($data) ) $memorycache[$username] = $data; } if ( is_object($data) ) { // update all fields, known to be requested foreach ($cache[$username] as $key => $value) if( isset($data->$key) ) $cache[$username][$key] = $data->$key; $cache[$username]['lastcheck'] = time(); } else { $cache[$username]['lastcheck'] = time()+60; } update_option( 'rarst_twitter_user', $cache ); } if ( false != $display ) echo $cache[$username][$field]; return $cache[$username][$field]; }
.
Użycie
Po wklejeniu funkcji możesz teraz użyć kodu w dowolnym pliku szablonu WordPress. Wystarczy wkleić następujący kod:
echo rarst_twitter_user('wpbeginner', 'name').' has '. rarst_twitter_user('wpbeginner', 'followers_count').' followers after '. rarst_twitter_user('wpbeginner', 'statuses_count').' updates.';
.
Powyższy kod wyświetli coś takiego:
WPBeginner ma 5846 followersów po 1300 aktualizacjach.
Źródło: Rarst
Aleks
Someone explain where I put in my own twitter username please? Cause I really cant see where… And I cant get it to work either… No matter what.. This just wont give me username, not even leaving it completly basic as it stands right now, I get no response on username what so ever… it just displays: „has followers after updates”…
That’s it.. nothing else…
wpbeginner
In the usage section, replace „wpbeginner” with your twitter name.
Downhill_MC
this is a great code. i wonder if there is a possibility to create a function for embedding in text (something like ). downhill_mc
Sandeep
will you please tell me how should i add these codes in my custom twitter image as you shows us in your example.
Editorial Staff
You would have to use CSS.. unfortunately we are not writing tutorials for those on this site.
Administrator
Ozh
(You should display syntax hilited and cleanly formatted code, really)
Rarst
Just noticed you lost + between time() and 60
Editorial Staff
Thanks for the correction. We really appreciate you providing the awesome snippets for everyone to use. Your hard work is really appreciated.
Administrator
Angelo Beltran
Nice! I like its flexibility. Cheers.
Rarst
Glad you found it useful. Old snippet still works but it got kinda outdated and spread around a lot – it was getting hard to answer questions and correct outdated parts all the time.
This one is slightly more bulky, but it has much extended functionality for showing more data and for different usernames at the same time.
I also intend to maintain it more properly so feedback and suggestions are welcome on its page at my blog.