Diskantti ei näytä kaikkia twiittejä hyvin. Minulla on tähän mennessä yli 600 twiittiä (useimmat niistä lähetetään PHP-skriptillä VPS :ssä ). Jos haluat tallentaa kopion kaikista historiallisista twiiteistäsi omaan tietokantaasi paikallisesti, voit tietysti pyytää arkistoa twitter-tililläsi [Asetukset – Tili – Pyydä arkistoa].
pyyntö-twitter-arkisto
Entä jos voit tallentaa kaikki twiitit ja näyttää ne blogissasi (WordPress-sivulla)? Idea on hieno, koska twiittejä voidaan pitää SEO-tarkoituksiin tarkoitettuina artikkeleina. Joten sinun on luotava taulukko wordpress-tietokantaan, esimerkiksi anna meidän nimetä se tweets.
twiittihistoria-taulukko
Meillä on neljä saraketta, nämä ovat: twiitin tunnus, teksti, päivämäärä/aika, uudelleentwiitin määrä. Tietysti voit saada lisää tietoa twitter API statuses/user_timeline -kohdasta, mutta olemme vain kiinnostuneita näistä neljästä.
Paikallinen säilytys
Twitter-sovellusliittymien käytölle on aina rajattu nopeus, joten et voi käyttää niitä kovin usein. Ajatuksena tässä on kuitenkin olla PHP-skripti, joka toimii crontabissa (muutaman tunnin välein) ja hakee twiitit ja tallentaa ne paikallisesti tietokantaan.
Voimme käyttää TwitterOAuth php -kirjastoa vuorovaikutukseen Twitterin API:iden kanssa:
// <a class="vglnk" target="_blank" href="http://helloacm.com" rel="nofollow"><span>helloacm</span><span>.</span><span>com</span></a>
// How to Show Tweets Archive in WordPress using PHP and MySQL with Crontab Support
require('TwitterOAuth-1/TwitterOAuth/TwitterOAuth.php');
require('TwitterOAuth-1/TwitterOAuth/Exception/TwitterException.php');
require('TwitterOAuth-1/config.php');
use TwitterOAuthTwitterOAuth;
date_default_timezone_set('UTC');
$config = array(
'consumer_key' => $twitter_apikey, // API key
'consumer_secret' => $twitter_apisecret, // API secret
'oauth_token' => $twitter_accesstoken, // not needed for app only
'oauth_token_secret' => $twitter_accesstokensecret,
'output_format' => 'object'
);
$tw = new TwitterOAuth($config);
Tallenna yllä nimellä twitter.php, jotta voimme sisällyttää ne aina, jos haluamme käyttää Twitterin API-liittymiä.
// <a class="vglnk" target="_blank" href="http://helloacm.com" rel="nofollow"><span>helloacm</span><span>.</span><span>com</span></a>
// How to Show Tweets Archive in WordPress using PHP and MySQL with Crontab Support
require("twitter.php");
$params = array(
'screen_name' => $twitter_screenname,
'user_id' => $twitter_ownerid,
'count' => 300,
'include_rts' => 1,
'exclude_replies' => false
);
$tweets = $tw->get('statuses/user_timeline', $params);
mysql_query("SET NAMES utf8");
if(!empty($tweets)) {
foreach($tweets as $tweet) {
$id = $tweet->id;
$retweet_count = (integer)$tweet->retweet_count;
$created_at = $tweet->created_at;
$text = $tweet->text;
$text = mysql_real_escape_string($text);
$query = "select count(1) from `tweets` where `id` = '$id'";
$result = mysql_query($query);
$cnt = mysql_result($result, 0, 0);
if ($cnt == 0) {
$query = "insert into `tweets` set `id`='$id', `text`='$text', `created_at`='$created_at',`retweet_count`='$retweet_count'";
} else {
$query = "update `tweets` set `id`='$id', `text`='$text', `created_at`='$created_at',`retweet_count`='$retweet_count' where `id`='$id'";
}
mysql_query($query);
}
}
mysql_query( " SET NAMES utf8") varmistaa, että tweetit on lisätty oikein tietokantaan. Mb_detect_encoding varmistaa, että API:ilta palautetut twiitit ovat todella UTF-8-koodattuja. Yllä oleva PHP-skripti tarkistaa kaksoiskappaleiden varalta (Twitterin perusteella ID), joten ensimmäisen kerran uusi twiitti lisätään, mutta toisella kerralla se vain päivitetään.
Yhdellä API-kutsulla saat maksimimäärän twiittejä, esim. 300. Jos sinulla on enemmän twiittejä, voit aina soittaa useita kertoja skriptille ladataksesi kaikki twiitit. Meidän on kuitenkin määritettävä max_id- parametri, joka palauttaa tätä tunnusta vanhemmat twiitit (pienemmät tunnukset). Jotta voimme:
// <a class="vglnk" target="_blank" href="http://helloacm.com" rel="nofollow"><span>helloacm</span><span>.</span><span>com</span></a>
// How to Show Tweets Archive in WordPress using PHP and MySQL with Crontab Support
$query = "select min(`id`) from `tweets`";
$result = mysql_query($query) or die(mysql_error());
$cnt = mysql_result($result, 0, 0);
$params = array(
'screen_name' => $twitter_screenname,
'user_id' => $twitter_ownerid,
'count' => 1000,
'max_id' => $cnt,
'include_rts' => 1,
'exclude_replies' => false
);
Ajatuksena on tarkistaa vanhin twiitti (min id:llä) ja palauttaa vain sitä vanhemmat twiitit, joten jos suoritat skriptejä useita kertoja, tuot kaikki twiitit.
Nyt meillä on tiedot valmiina ja voimme saada tämän skriptin toimimaan VPS-palvelimella muutaman tunnin välein (taajuus riippuu sinusta) käyttämällä crontab -e -komentoa.
Näytä twiitit WordPress-sivuilla
Nyt tämä sivu helloacm.com/tweets-history/ näyttää kaikki tietokannan puut. Tarvitset laajennuksen suorittaaksesi PHP/HTML:n WordPress-sivulla. Löydät helposti tällaisia WordPress-laajennuksia.
Luo wordpress-sivu ja laita seuraava:
[ include ]tweets.php[ / include ]
Sitten meidän on asetettava PHP-skripti tähän yllä määritettyyn tweets.php-tiedostoon.
<php
// <a class="vglnk" target="_blank" href="http://helloacm.com" rel="nofollow"><span>helloacm</span><span>.</span><span>com</span></a>
// How to Show Tweets Archive in WordPress using PHP and MySQL with Crontab Support
global $wpdb;
$query = "select count(1) from `tweets`";
$total = $wpdb->get_var($query);
$per = 50;
$page = get_query_var('page');
if (!$page) {
$page = 1;
}
// pagination
$totalpages = ceil($total / $per);
if ($page > $totalpages) {
$page = 1;
}
$lowerbound = ($page - 1) * $per;
$upperbound = $lowerbound + $per;
$lmt=" limit ". $lowerbound. ",". $per;
$query = "select * from `tweets` order by `id` desc $lmt";
$result = $wpdb->get_results($query);
if ($result) {
foreach ($result as $tweet) {
$created_at = $tweet->created_at;
$text = $tweet->text;
$retweet_count = $tweet->retweet_count;
// display tweets
echo "$text - $created_at";
if ($retweet_count > 0) {
echo "($retweet_count Retweeted)";
}
}
}
// show prev/next page links
if ($page > 1) {
echo "<a href='?page=".($page-1)."'>Newer Tweets</a> - ";
}
if ($page < $totalpages) {
echo "<a href='?page=".($page+1)."'>Older Tweets</a>";
}
Käytämme get_query_var(’page’) saadaksemme kyselymerkkijonon, jotta tiedämme, mitä sivua katselemme.

