À la découverte de l'API REST WP
WP Tech 2015 Nantes
@maximebj
Développeur / formateur / blogueur / entrepreneur
wp-spread.com : blog WP, tutos, actus
dysign.fr : Site perso / blog entreprenarial
Qu'est-ce qu'une API REST ?
Une Requête HTTP (GET, PUT, DELETE)
Une authentification (API KEY)
Utilisable via une commande système CURL
en tapant l'URL directement dans le navigateur
Via une requête Ajax...
Une réponse JSON
L'histoire de la
WP API
- 2013 : Projet lancé lors du GSOC par Ryan McCue, core dev WP (chez HumanMade depuis 2014 - Happytables)
- Mai 2014 : Version 1.0 beta release
- Mars 2015 : V1.2 beta avec beaucoup de nouveautés
- 29 Avril 2015 : V2.0 Beta : changement de routes
- 21 septembre 2015 : Merge proposal
- 28 octobre 2015 : Merge dans le Core WP
- 8 décembre 2015 : Sortie de WP 4.4 avec l'API phase 1
- Première moitié 2016 : API Rest phase 2 (API exposée vers l'extérieur)
L'api était initialement prévue pour WP 4.1, puis 4.3 en aout 2015...
Source : https://make.wordpress.org/core/tag/json-api/
Brian Krogsgard - Poststatus.com
"The WordPress REST API project is the most exciting project for the platform since custom post types were introduced"
"The integration of the JSON REST API will mark the final transformation of WordPress from its humble roots as a blogging solution into a fully-featured application platform"
WooCommerce
a déjà une API REST !
#woobogoss
#jmelapete
#bandedenoobs
Et le XML-RPC ?
JSON préféré aujourd'hui, plus simple à parser
XML-RPC pas aussi développé en terme de fonctions que l'API REST
Quelques personnes frileuses à propos de la sécurité (attaques brute force 2014)
Comment l'API REST va changer WordPress
Quelques idées...
Thèmes basés JS
Ils pourront se passer du moteur de template, être complètement gérés en Js (React JS).
Un thème expérimental proposé par Automattic :
https://github.com/Automattic/Picard
(nécessite NPM, Gulp installés dans votre terminal)
Un tuto sympa : http://themeshaper.com/2015/11/27/challenges-javascript-theming/
Single page apps
Utiliser WordPress comme base de publication pour une application moderne, fluide
Calypso
wordpress.com a entièrement revu son écran d'admin en utilisant l'API Rest + Node.js
Plus d'infos : https://developer.wordpress.com/calypso/
App natives
Construction d'app natives ios & android qui récupèrent le contenu d'un site WP via l'API REST
Backend CMS mobile
Proposer WordPress comme CMS pour apps natives mobiles
ContenFul s'est positionné sur ce secteur mais avec un CMS maison
Custom Panels
Proposer des interfaces adaptées aux besoins spécifiques des clients/utilisateurs (Ex : Pickle et HappyTables)
Publication sur autres apps
Utiliser WP comme moteur de contenu et y afficher sur un site fait avec une autre plateforme (Ruby On Rails, Django...)
Un éditeur de contenu front
Un builder afin de pouvoir enfin éditer en front des mises en pages poussées
L'explosion de JS
Dev PHP/SQL
Dev JS
Javascript a connu une explosion depuis jQuery.
Aujourd'hui : Node.js, Angular, Backbone, Ember, React ...
donnent l'impression que :
L'API REST WP
Comment ça marche ?
Installation
- Installer le plugin : https://wordpress.org/plugins/json-rest-api/
- Rafraichir les permaliens
- Installer l'extention Pretty Json pour Chrome ou Firefox
Envoyer une requete
Filtres : voir WP Query dans le Codex
https://codex.wordpress.org/Class_Reference/WP_Query
Résultat
Une petite démo !
Sécurité et authentification
Authentification Nonce
Pour les développeurs de thèmes et plugins
functions.php
script.js
Authentification Oauth
Pour les accès depuis l'extérieur de WP
Nécessite Oauth sur le serveur ainsi que le plugin Oauth sur le site
(le plugin Oauth sera intégré dans la version finale de l'API Rest)
Hooks/Filters utiles
Allons un peu plus loin
Débloquer certains filtres
Certains filtres sont bloqués par défaut mais on peut les autoriser
Parmi eux : les meta_queries, les data_queries...
functions.php
Envoyer les custom fields
Par défaut l'API n'envoie pas le contenu des custom fields
Possible d'envoyer n'importe quelle donnée supplémentaire
functions.php
Prise en charge des CPT
Il faut déclarer votre CPT à l'API pour qu'elle ajoute les routes
functions.php
Ajouter vos routes
afin de créer des requêtes spéciales, rattachées à votre thème ou votre plugin
functions.php
Namespaces
afin d'éviter tout conflit, vous pouvez créer votre propre namespace, qui se traduira par un changement dans l'URL
Au lieu de /wp/v2 vous pouvez définir myplugin/v1
Problème asynchrone
C'est un problème de WordPress à la base, pas de l'API
imaginons une app à la 9gag sur laquelle on scroll indéfiniment
Solution !
Faire la première requête simplement
Récupérer la date de publication de l'article le plus récent
les prochaines requêtes demandent les articles "avant" cette date
Cela aura pour effet de ne pas prendre en compte les articles crées après cette date.
RDV dans la Coding Room
On code un projet ensemble ?
Ressources utiles
- Documentation : http://v2.wp-api.org/
- Repo Git Hub : https://github.com/WP-API/WP-API
- Discussion Core : https://make.wordpress.org/core/tag/json-api/
- Plugin Homepage : https://wordpress.org/plugins/json-rest-api/
- Articles :
https://poststatus.com/wordpress-json-rest-api/
https://premium.wpmudev.org/blog/wordpress-rest-api/
http://torquemag.io/on-the-wordpress-rest-api-reflecting-on-the-past-and-looking-to-the-future/
- Tutos :
http://themeshaper.com/2015/11/27/challenges-javascript-theming/
http://wp-spread.com
- Conférences :
http://jacklenox.com/2015/03/30/building-themes-with-the-wp-rest-api-wordcamp-london-march-2015/
Merci !
Des questions ?
Twitter @maximebj
Blog : wp-spread.com
Site perso : dysign.fr
A la découverte de l'API REST WordPress
By maximebj
A la découverte de l'API REST WordPress
- 29,699