I feed JSON non sono consigliati per vari motivi. Innanzitutto, trattandosi comunque di JavaScript, possono porre dei problemi di sicurezza in quei browser che non hanno ancora implementato i metodi nativi per il parsing e l'esecuzione del codice contenuto nei feed (in IE6 e 7 si deve ancora usare eval()
). Un altro problema è quello del consumo di risorse da parte di siti di terze parti mediante inclusione o scraping. Tuttavia, implementare un feed JSON in WordPress è possibile. Vediamo come.
WordPress possiede dei metodi nativi solo per i feed RSS e Atom. Per i feed JSON dovremo creare una sezione dedicata e usare il seguente codice, che reperisce i dieci post più recenti completi di titolo, riassunto, data e URL:
header('Content-Type: application/json');
$connection = mysql_connect('host', 'xxxx', 'xxxx');
mysql_select_db('xxxx', $connection);
$query = "SELECT post_date, guid, post_excerpt, post_title,
post_type FROM wp_posts WHERE post_type = 'post'
ORDER BY post_date DESC LIMIT 10";
if($result = mysql_query($query, $connection)) {
$json_data = array();
while($results = mysql_fetch_assoc($result)) {
$json_data[] = array(
'title' => $results['post_title'],
'guid' => $results['guid'],
'excerpt' => $results['post_excerpt'],
'date' => $results['post_date']
);
}
}
echo json_encode($json_data);
Ecco un possibile output:
[{ "title":"CSS: didascalie di tabella verticali",
"guid":"http:\/\/gabrieleromanato.com\/?p=2267",
"excerpt":"Un test sul posizionamento e le trasformazioni CSS3 applicati alle didascalie delle tabelle.",
"date":"2011-12-14 08:30:10"},
// continua
}]
In questo caso abbiamo usato un JSON semplice. Se volete usare JSONP (JSON with Padding) dovete specificare per prima cosa una funzione di callback con cui usare il vostro codice:
Funzione({
[]
});
Per maggiori dettagli, seguite questa discussione.
Non è finita. Dovete anche autorizzare il sito remoto ad accedere alla vostra risorsa per non incorrere nella same-domain policy dei browser. Il modo più semplice è usare il file .htaccess
come descritto in questo post.
Verificate sempre che il vostro web server consenta le operazioni descritte nelle risorse elencate.