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

A DAY OF REST

Journée de conférence dédiée entièrement à l'API REST WP

https://feelingrestful.com

Merci !

Des questions ?

Twitter @maximebj

Blog : wp-spread.com

Apprendre WordPress : WPChef.fr