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

Comment l'API REST WP va changer notre avenir
By maximebj
Comment l'API REST WP va changer notre avenir
- 14,878