Comment l'API REST WP
va changer notre avenir
WordCamp Paris 2016
@maximebj
Développeur / formateur / blogueur / entrepreneur
wpchef.fr : formation e-learning WordPress
wp-spread.com : blog WP, tutos, actus
Qu'est-ce qu'une API REST ?
Principe de base
Un peu d'histoire
- 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"
Evolution des APIS
Dans le monde depuis 2005
Text
Crédits : Human made - Talking to 25% of the web
Enjeux
Back/Front : le divorce
Communication avec l'extérieur
Ouverture aux développeurs et plateformes
Ce qui change
- Communication plus rapide et accessible à toute technologie
- Plus de développeurs de différents environnements (JS, Android, ios, ruby, python…)
- Plus besoin de maitriser le front end web WP : loop, WP Query, templates hierarchy
- WP : un module dans une infrastructure plus grande de workflow (exemple : NY Times)
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
en action
Envoyer une requete
Filtres : voir WP Query dans le Codex
https://codex.wordpress.org/Class_Reference/WP_Query
Résultat
Une petite démo ?
Comment l'API REST va changer WordPress
en 9 idées...
1. 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/
2. Single page apps
Utiliser WordPress comme base de publication pour une application moderne, fluide
3. 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/
5. App natives
Construction d'app natives ios & android qui récupèrent le contenu d'un site WP via l'API REST
6. Backend CMS mobile
Proposer WordPress comme CMS pour apps natives mobiles
ContenFul s'est positionné sur ce secteur mais avec un CMS maison
7. Custom Panels
Proposer des interfaces adaptées aux besoins spécifiques des clients/utilisateurs (Ex : Pickle et HappyTables)
8. 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...)
9. Un éditeur de contenu front
Un builder afin de pouvoir enfin éditer en front des mises en pages poussées
Intégrations
Laravel
Déjà plein d'outils :
WordPress Corcel
WordPressToLaravel
WP Eloquent
laravel-wp-api
https://laravel-news.com/2016/01/wordpress-and-laravel/
Javascript
Module NPM pour communiquer facilement avec l'API
https://github.com/kadamwhite/wordpress-rest-api
CURL
Pas besoin de pré-requis particulier
Pour chaque technologie qui prend en compte la commande CURL ou équivalent, c'est compatible !
Exemple Ruby On Rails
http://code.tutsplus.com/tutorials/build-a-custom-api-to-connect-wordpress-with-ruby-on-rails--cms-21189
Idem pour Swift, Java ...
Etudes de cas
L'API REST dans la vraie vie
Nomadbase
Permet de savoir où vont les digitals nomads
Stack : WP, Rest API et React.js
Yurplan
Yurplan est codé en PHP avec Symfony
Utilisation de WordPress et l'API pour gérer tous les textes statiques du site afin d'éviter des mises en prod à chaque modification de texte
New York Times
Application maison + WordPress embarqué
Site principal, événements live, blogs
Plateforme live coverage : API, React, Websocket
et même Slack
WordPress = Webservice
Wired
Utilisation pour l’application mobile
Utilisation pour transmettre les articles vers la préprod
Liaison vers Slack pour un liveblog slack - node server - slack
futur : home page custom avec API et react
The Times
Utilisation de l'API pour récupérer des collections de ressources réparties sur plusieurs sites WP (multisite)
par exemple pour la retrospective de David Bowie
The Times (bis)
Visual Editor front pour les articles à la medium implémenté dans WP
React Js pour le rendu temps réel
NPM
Fiches des packages et documentation gérés par WordPress
pratique pour les éditeurs de package éditer du contenu
template : handlebars + Node js + cache
Sécurité et authentification
Authentification Cookie
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
WP-CLI + WP-API
Les développeurs de WP-CLI veulent rendre leur service plus RESTFul
Tout savoir sur l'API Rest !
Ressources
Liens 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/
Ebooks
Talking to 25% of the web
par Human Made
The ultimate guide to the WP Rest API
Par WP Engine
50 pages chacun environ
Conférences
Merci !
Des questions ?
Twitter @maximebj
Blog : wp-spread.com
Apprendre WordPress : WPChef.fr