WordPress: pubblicare un tweet come post
Una semplice soluzione per pubblicare i nostri tweet di Twitter come post di WordPress.
Possiamo reperire il nostro ultimo tweet da Twitter e pubblicarlo come un normale post su WordPress con una procedura alquanto semplice. Vediamo quale.
Per prima cosa creiamo una categoria e un nuovo tag per questo tipo di post. Nel nostro esempio useremo tweets come categoria e tweet come tag. Questo ci permette anche di distinguere questo tipo di post dagli altri.
Apriamo il file functions.php del nostro tema e aggiungiamo il seguente codice:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
function get_insert_latest_tweet() {
global $wpdb;
$post = array();
$url = "http://twitter.com/statuses/user_timeline/username.xml?count=1";
if(file_get_contents($url)) {
$xml = new SimpleXMLElement(file_get_contents($url));
$status = $xml->status->text;
$time = nice_time(strtotime($xml->status->created_at));
$tweet = preg_replace('/http:\/\/(.*?)\/[^ ]*/', '<a href="\\0">\\0</a>', $status);
$title = preg_replace('/http:\/\/(.*?)\/[^ ]*/', '', $status);
$result = $wpdb->get_row("SELECT * FROM $wpdb->posts WHERE post_title = '$title'");
$post['post_title'] = $title;
$post['post_content'] = '<p>' . $tweet . ' <small>' . $time . '</small></p>';
$post['post_status'] = 'publish';
$post['post_category'] = array(145);
$post['tags_input'] = 'tweet';
if(is_null($result)) {
wp_insert_post($post);
}
} else {
return;
}
}
add_action( 'pre_get_posts', 'get_insert_latest_tweet');
function nice_time($time) {
$delta = time() - $time;
if ($delta < 60) {
return 'meno di 1 minuto fa.';
} else if ($delta < 120) {
return 'circa 1 minuto fa.';
} else if ($delta < (45 * 60)) {
return floor($delta / 60) . ' minuti fa.';
} else if ($delta < (90 * 60)) {
return 'circa 1 ora fa.';
} else if ($delta < (24 * 60 * 60)) {
return 'circa ' . floor($delta / 3600) . ' ore fa.';
} else if ($delta < (48 * 60 * 60)) {
return '1 giorno fa.';
} else {
return floor($delta / 86400) . ' giorni fa.';
}
} |
Abbiamo intercettato il caricamento dei post tramite la action pre_get_posts e aggiunto la nostra funzione. Al suo interno, abbiamo per prima cosa reperito il tweet e formattato i suoi elementi. Quindi abbiamo eseguito una query sul database per esseri sicuri di non inserire due volte lo stesso tweet. Se non si tratta dello stesso tweet, abbiamo usato la funzione wp_insert_post() passandogli un array di argomenti contenente i dati del nostro post che abbiamo ottenuto dal tweet.
Ecco il risultato:
Ovviamente potete rendere manuale questa operazione associandola ad un’azione di un plugin.

9 commenti
Ciao. Questo post mi interessa parecchio. Però non capisco come posso legare questa funzione al mio utente twitter. In particolare non so cosa mettere negli url. Che differenza c’è tra user e username sulla variabile $Url? Scusatemi. Ma sono un neofita del web.
Ciao. Devi inserire il tuo username di Twitter, quello che hai su Twitter. Il mio è gabromanato. Lo username è il nome utente che tu hai su Twitter, quello che compare per esempio come @nomeutente.
Ok.
Ma nella stringa $url = “http://twitter.com/statuses/user_timeline/username.xml?count=1″;
cosa si mette al posto di user e username? gabromanato?
E in queste due specifiche:
$tweet = preg_replace(‘/http:\/\/(.*?)\/[^ ]*/’, ‘\‘, $status);
$title = preg_replace(‘/http:\/\/(.*?)\/[^ ]*/’, ”, $status);
scusa ancora per la mia ignoranza.
al posto di username va il tuo username, cioè il tuo nome utente. Quelle due stringhe servono 1) a convertire gli URL in link HTML e 2) a eliminare gli URL dal titolo del post. non vanno toccate. per esempio, se il tuo nome utente su Twitter è pippo, la stringa $url diventa:
http://twitter.com/statuses/user_timeline/pippo.xml?count=1.Ok. ci provo. Grazie 1000 per la pazienza.
sto provando ad inserirlo sul nostro sito di architettura conremporanea channelbeta
ho provato inserendo l’user channelbeta corretto e modificando inserendo l’id della categoria news in modo che i post compaiano nella categoria desiderata ma nulla… puoi aiutarmi grazie
ciao sto provando ad inserire ma non funge, dipende dalla versione di wp noi abbiamo la 3.3.1 grazie
mandami un’email sabato con i dettagli del problema. oggi e domani sono davvero pieno di lavoro. ciao :-(
grande script davvero.
Ma se volessi eliminare i tweet tra utenti?
Ho visto uno script simile (con gli rss) che fa la stessa cosa http://nicopi.blogspot.it/2011/03/javascript-visualizzare-ultimi-tweet.html
ma non saprei come fare per modificare questo
Grazie
Trackback
I commenti sono chiusi.