Source : http://pxagency.fr/wordpress-api/
Les API permettent d'enrichir facilement des contenus afin de créer des mashup qui plairont à la fois aux internaute et à Google.
Vous trouverez dans cette présentation :
- une explication de ce qu'est une API
- une liste de ressources gratuites
- des exemples pratique pour utiliser une API avec Wordpress
- et des conseils pour que l'implémentation ne génère pas de problèmes techniques
Enrichir vos contenus Wordpress avec les API - WPTech 2015
1. 1Enrichir Wordpress avec les API - Fabien Elharrar - WPTech 2015
Enrichir vos contenus Wordpress avec les API
Fabien ELHARRAR
Une présentation pour grosses feignasses
et Black Hat SEO wanabee
WPTech 2015
2. 2Enrichir Wordpress avec les API - Fabien Elharrar - WPTech 2015
Qui suis-je ?
Fabien ELHARRRAR
Ingénieur en Mécanique + MBA en Marketing
10 ans de Consulting en Management (Peugeot, Orange, TF1, Lacoste, etc.)
Editeur web depuis 2012
Consultant free-lance en Monétisation web
J’édite seul plus de 20 sites internet
500.000 pages vues par mois
Reach Facebook > 5 millions / semaine
…
Un bon ingénieur est un ingénieur feignant
3. 3Enrichir Wordpress avec les API - Fabien Elharrar - WPTech 2015
Dis papa c’est quoi une API ?
Application Programming Interface
Une API est une ensemble normalisé de classes, de méthodes ou de fonctions qui
permettent d’interagir avec un service web.
Les APIs permettent entre autres de récupérer des données structurées stockées chez un
Tiers en mode lecture.
Dans ce cas précis, cela revient plus ou moins à consulter une base données qui ne se trouve
pas sur votre serveur.
La plupart des APIs sont gratuites dans la limite d’un nombre de requêtes par jour
et passent ensuite payantes.
Par conséquent une grande majorité d’APIs nécessitent une authentification.
A quoi ça peut bien me servir ?
A enrichir vos contenus dynamiquement, ce qui plaira aux internautes et à Google :
Gain de temps (recherche et saisie)
Fraicheur des données
4. 4Enrichir Wordpress avec les API - Fabien Elharrar - WPTech 2015
Quelques exemples d’utilisation des API
Drapeau
Devise
Langue
Indicatif pays
Météo
Avis Google
je-voyage.net
pix-geeks.com
Cover photo
Année
Network
Description
Planning épisodes
Fiche personnage
5. 5Enrichir Wordpress avec les API - Fabien Elharrar - WPTech 2015
Où trouver les API dont vous avez besoin ?
2 annuaires d’API de référence
Il existe des dizaines de milliers d’APIs sur internet.
Elles ne sont pas toujours bien documentées, et sont parfois même officieuses (API Allociné)
Les résultats sont généralement restitués aux formats JSON ou XML
2 directories de référence permettent de trouver presque tout :
5.000+ API publicapis.com
14.000+ API programmableweb.com
Quelques API que j’utilise quotidiennement
Réseaux sociaux : Twitter, Facebook, Youtube, Sharedcount, Klout
Contenus : Betaseries, Comicvine, Marvel, TheMovieDB, OMDBapi, Discogs, Chartlyrics,
Audioscrobbler, iTunes
Traduction : DetectLanguage, MicrosoftTranslator
Géolocalisation : OpenWeatherMap, Google Maps
Etc.
6. 6Enrichir Wordpress avec les API - Fabien Elharrar - WPTech 2015
XML : un format structuré mais pas toujours pratique
$xml_response = '
<movies>
<movie>
<title>WPTech Movie</title>
<plot>Le monde merveilleux de Wordpress</plot>
<rating type="stars">10</rating>
<characters>
<character>
<name>Ms Coder</name>
<actor>Angelina Jolie</actor>
</character>
<character>
<name>Mr Coder</name>
<actor>Daniel Roch</actor>
</character>
</characters>
</movie>
<movie>…</movie>
</movies>';
$result = new SimpleXMLElement($xml_response);
echo $result->movie[0]->title;
echo "<ul>";
foreach ($result->movie->characters->character as $character){
echo "<li>". $character->name . " joué par " . $character->actor. "</li>";
}
echo "</ul>";
XPATH EST
TON AMI
XPATH EST
TON AMI
7. 7Enrichir Wordpress avec les API - Fabien Elharrar - WPTech 2015
JSON : un format flexible de plus en plus répandu
$json_response = '{
"movies": [{
"title": "WPTech Movie",
"rating": "10",
"plot": "Le monde merveilleux de Wordpress",
"characters": [{
"name":"Ms Coder",
"actor":"Angelina Jolie"
},{
"name":"Mr Coder",
"actor":"Daniel Roch"
}]
},{ … } ]
}';
$result = json_decode($json_response, true);
echo $result['movies'][0]['title'];
echo "<ul>";
foreach ($result['movies'][0]['characters'] as $character){
echo "<li>". $character['name'] . " joué par " . $character['actor']. "</li>";
}
echo "</ul>";
8. 8Enrichir Wordpress avec les API - Fabien Elharrar - WPTech 2015
Utilisez les API avec précaution
Une forte consommation de ressources serveur
Récupérer du contenu externe via file_get_contents ou curl peut rapidement faire tomber
une petite configuration (serveur mutualisé)
Un temps de réponse parfois long
Certaines APIs mettent plusieurs secondes pour répondre à vos requêtes.
Modifiez les paramètres de votre serveur Apache ou rajoutez une ligne dans votre php.ini
max_execution_time = 30
Evitez les traitement groupés
Il est tentant de peupler toute une base de données via un batch, mais :
La plupart des APIs ont des limites en nombre de requêtes par secondes
Sont payantes au-delà d’un certain nombre de requêtes par jour
Bloqueront votre compte / l’IP de votre serveur en cas d’usage abusif
Appelez les APIs uniquement quand vous en avez besoin cad à l’affichage d’une page
(init ou update de données via API)
9. 9Enrichir Wordpress avec les API - Fabien Elharrar - WPTech 2015
Les caches sont vos amis … il faut les aimer aussi
Mettez les données récupérées via API en cache
Stockez systématiquement les données récupérées via API en base de donnée ou dans
des fichiers plats.
Stockez systématiquement une date de mise à jour.
Lors de l’affichage d’un contenu mash-up ne requêtez l’API que si vos données sont
périmées.
Utilisez un plug-in de cache
L'erreur est humaine mais un véritable désastre nécessite un ordinateur.
Bill
Gates
Toute forme d’automatisation présente des risques. Une erreur dans le code et
votre serveur se mettra à ramer s’il ne plante pas carrément…
Utilisez systématiquement un plug-in de cache statique pour éviter les surcharges
serveur liées aux passages de Bots ou aux pics de fréquentation.
10. 10Enrichir Wordpress avec les API - Fabien Elharrar - WPTech 2015
Où stocker les données récupérées via API ?
Variables temporaires
Transients
Articles
Custom fields
Table d’options
wp_options
Données à rafraichir de façon
cyclique (compteurs)
Widgets
Données relativement
statiques
Valeurs de tris
Champs administrables dans
le backoffice
set_transient($transient, $value,
$expiration);
get_transient($transient);
update_post_meta ($post_id, $key,
$value, $prev_value);
get_post_meta($post_id,$key,$single);
update_option ($option, $value,
$autoload);
get_option ($option, $default);
Wordpress crée
automatiquement 1 entrée
dans wp_options pour
déterminer la date à laquelle
les 2 champs seront supprimés
via CRON.
_transient_name
_transient_timeout_name
Pensez à créer une 2ème
entrée avec la date de mise à jour.
Lors de l’affichage de cette valeur vous ferez une comparaison
avec la date courante pour déterminer s’il est nécessaire de faire
une maj via API.
Créez une valeur backup qui sera réutilisée si l’API ne fonctionne pas
11. 11Enrichir Wordpress avec les API - Fabien Elharrar - WPTech 2015
Les API et Wordpress : quelques points à retenir
Pour réduire la charge serveur liée aux API
Activez un plug-in de cache
Appelez vos fonctions depuis single.php et sidebar.php
Contrôlez de la date de dernière mise à jour
Appelez l’API uniquement à ce moment là si nécessaire
Stockez ces données localement
Régulièrement l’API ne fonctionnera pas
Limite de requêtes dépassée
Downtown du service appelé
Timeout
API dépréciée
Comparez systématiquement les données rapatriées
à celles stockées en base (custom fields, wp_options)
à un champs de « backup » dans wp_option
13. 13Enrichir Wordpress avec les API - Fabien Elharrar - WPTech 2015
Et s’il n’existe pas d’API ?
Il n’existe pas toujours d’API répondant à vos besoins. Si l’information cherchée est
disponible sur une page web publique vous pouvez toujours la scrapper (la télécharger) pour
en extraire des données.
Récupérer le nombre de contacts Viadeo d’un compte
function get_viadeo_count($viadeo_account, $timeout = 14000) {
$contacts = get_transient('viadeo_contacts_'.$viadeo_account);
if (!$contacts){
$string = file_get_contents("http://fr.viadeo.com/fr/profile/".$vurl);
$string = eregi_replace('<p><span>','',$string);
$string = eregi_replace('</span>contacts','',$string);
if (preg_match('~gridUnit grid1of2 brd tac contact">(.*?)</~', $string, $match)!=0)
{ $contacts = $match[1]; }
if ($contacts) { update_option( 'backup_viadeo_contacts_'.$viadeo_account, $contacts ); }
else { $contacts = get_option('backup_viadeo_contacts_'.$viadeo_account); }
set_transient('viadeo_contacts_'.$viadeo_account, intval($contacts), $timeout);
}
return $contacts;
}
Pour aller plus loin sur le scrapping :
XPath : langage permettant d’extraire des portions de documents XML
RDDZ Scrapper : un des meilleurs logiciels utilisant XPath
OUI JE SUIS
NUL EN REGEXP
OUI JE SUIS
NUL EN REGEXP
14. 14Enrichir Wordpress avec les API - Fabien Elharrar - WPTech 2015
Créer votre propre API pour faire communiquer vos sites
Pour intégrer des contenus entre plusieurs sites, vous pouvez utiliser des iframes,
faire des requêtes $wpdb sur un WP Multisite, etc. ou créer une petite API privée
Créez une page en noindex avec un custom template :
<?php
/* Template Name: Mon API privée */
if (isset($_GET['parameter'])) {
$parameter = $_GET['parameter'];
$args = array(…);
$my_query = new WP_Query($args);
$response = array('data_1' => …, 'data_2' => …);
echo json_encode($response);
}
?>
Exemple d’intégration entre 2 sites via API privée
provient de
http://monsite.com/api?parameter=toto
15. 15Enrichir Wordpress avec les API - Fabien Elharrar - WPTech 2015
Questions / Réponses
Fabien ELHARRAR
Consultant en Monétisation Web
+33 6 66 20 36 98
fabien.elharrar@pxnetwork.fr
Fabien ELHARRAR
Consultant en Monétisation Web
+33 6 66 20 36 98
fabien.elharrar@pxnetwork.fr
.com
Restons en contact
On cherche des
rédacteurs Wordpress