 Bonjour à tous, je vais vous présenter aujourd'hui l'API REST de WordPress pour ce qui était au WP Tech Nantes, ce n'est pas exactement la même conférence mais il y aura des parties communes. Aujourd'hui je vais plutôt vous parler des enjeux de cet API, pourquoi pour moi ça va vraiment changer notre avenir à très court terme et en espérant que ça puisse vous ouvrir un petit peu des idées sur tout ce qui va changer demain grâce à cet API. Je m'appelle Maxime, je suis développeur et formateur WordPress depuis maintenant plus de 8 ans et mon projet du moment c'est WP Chef, une plateforme e-learning pour faire de la formation. J'ai un blog aussi WP Spread sur lequel je publie des articles un petit peu techniques et entreprenariaux de temps en temps. Alors tout d'abord qu'est-ce qu'une API REST, on va juste revoir un petit peu à quoi ça ressemble, tout le monde sait ce que c'est qu'une API ici ou non c'est bien, je lui ferai de passer des slides. L'API REST en fait, je vous ai fait un petit schéma, j'espère qu'il sera assez clair, vous avez d'un côté votre application et d'un autre côté l'application de quelqu'un d'autre avec une API qui est exposée au grand public. Donc vous allez faire une requête de votre application vers l'API et la requête c'est une requête HTTP. Donc pour simplifier au maximum c'est comme si on tapait une URL en fait vers l'application pour un FR par exemple dans WordPress et Slash WP Json, Slash V2, Slash Post et en fait en envoyant ça, en demandant en fait à l'API, revois-moi en fait la liste des derniers articles et du coup l'API va vous renvoyer une réponse en Json. Le Json pour ce qui ne connaissent pas c'est comme du XML, c'est un format de données qui est brut avec des clés et des valeurs qui vont être facilement lisibles par votre application. L'objectif en fait tout simplement c'est que votre application est capable d'aller chez quelqu'un d'autre et les afficher chez vous. Vous pouvez vous connecter à l'API de Twitter, de Flickr, de YouTube et du coup faire des applications qui se connectent à d'autres et qui récupèrent des informations de manière facile et élégante on va dire. Un tout petit peu d'histoire par rapport à l'API REST aujourd'hui c'est considéré comme un gros chantier de WordPress. Elle est là pour être vraiment au coeur du système. Ça a commencé sur un tout petit projet comme bien souvent en 2013. Un événement qui s'appelle Google Summer of Code, GSOC. Et c'est Ryan McQ, un dégât qui bosse chez Human Made, une agence en Angleterre, qui s'est dit je crée un petit système d'API pour WordPress. Pourquoi ? Parce que tout simplement à peu près tout à l'heure actuelle fonctionne avec des API et notre pauvre bon vieux WordPress n'avait pas d'API à proprement parler. Donc c'est dit ça peut être une bonne idée. Donc on voit au fur et à mesure du temps qu'il y a des versions qui commencent à évoluer, version beta, version 1.2, version 2. Donc là on est déjà en 2015, il y a déjà un an et demi de développement. Et ils se rendent compte, effectivement c'est un gros morceau de faire une API. Ce n'était pas ce qu'on avait prévu à la base en 2-3 semaines. On pondait un truc et puis voilà. Pendant ce temps-là il y a eu beaucoup d'engouement de la part d'autres développeurs, il y a des gens qui ont rejoint le projet. Et du coup tout le monde s'est mis un petit peu à bosser là-dessus. Le 21 septembre, ils ont annoncé du coup on va proposer un merge proposal. Ça veut dire qu'on leur dit qu'on est prêt au niveau du projet et qu'on veut rentrer ça dans le cœur de WordPress. Donc ça devient une composante qui est intégrée dans WordPress dès que vous le téléchargez. C'est accepté, ça passe en travaux. Originalement ils voulaient intégrer dans la version 4.1, puis la version 4.3 etc. Au final c'est arrivé avec la version 4.4 en décembre de l'année dernière et du coup vous avez l'API qui est intégrée dans WordPress maintenant. De manière un petit peu discrète parce que la deuxième phase de l'API va arriver dans la première moitié 2016. C'est-à-dire qu'aujourd'hui vous avez une partie du système qui est dedans mais pas tout. Il faut que vous créez vos propres routes, on verra un petit peu après ça. Pour l'instant sinon vous pouvez rien faire. Donc il y a encore beaucoup à faire et selon moi ça va vraiment tout changer comment on va coder sur WordPress à l'avenir et le nombre de développeurs qui y aura et cette évolution des 25% va pouvoir aller beaucoup plus vite parce qu'on va toucher beaucoup plus de monde. Mon propos est un petit peu nuancé parce qu'hier il y a eu une pleinière entre Matt Mullenweg et puis l'équipe des développeurs de l'API sur le slack du cœur WordPress. C'est un petit peu ouleux. Matt veut qu'il y ait absolument toutes les fonctionnalités dans l'API quand ils vont la sortir et effectivement ils sont que quatre corps développeurs et derrière ils sont obligés de bombarder pour faire ça et ils ne sont pas d'accord sur le fait de sortir absolument tout ce que vous pouvez faire dans l'admire WordPress à l'heure actuelle de pouvoir le rechercher avec une API. Donc les prochains mois vont être assez mouvementés on verra ce que ça donne. Il y a deux cas de figure soit dans six mois on n'a plus jamais parlé de cet API et c'est retombé dans l'oubli. Soit et j'espère que ça sera comme ça l'API va faire exploser WordPress parce qu'on aura une belle évolution là-dessus. De trois citations que j'ai bien aimées de la part de post-tatue. Il disait le gars que l'API RS c'est le projet le plus important et plus excitant depuis la mise en place des custom post type il y a quelques années déjà en arrière. Et ça va faire la dernière transformation de WordPress, ce n'est pas qu'une plateforme de blog mais WordPress c'est aussi quelque chose une plateforme d'application et de traitement donné qui est vraiment opérationnelle en espérant que ça le devienne vraiment. Pour vous dire l'importance des APIs dans le monde on a vu la première apparaître en janvier 2015 et ça a évolué après de plus en plus on retrouve en 2013 plus de 10 000 APIs recensés dans les applications etc. Il y a beaucoup de plugins WordPress qui utilisent des APIs pour communiquer c'est le cas d'Imagify notamment ils ont leur propre API pour communiquer avec WordPress pour récupérer vos images et les optimiser donc il y a des services externes et tous branchent les uns aux autres ça fait un vrai réseau de communication. Alors les enjeux c'est important à quoi elle va servir c'est pas juste pour moi selon moi un logiciel quelconque ça va aussi amener le divorce entre le back end et le front end alors voilà une API elle va permettre de communiquer plus largement aujourd'hui on fait quoi avec WordPress on a un back end donc notre admin et de l'autre côté on a le front end donc notre site web le site web il est avec du PHP, du HTML, du CSS comme on a l'habitude depuis plus de 10 ans maintenant la API elle va nous permettre de communiquer non seulement avec un ordinateur et un navigateur mais aussi avec des applications mobiles avec des objets connectés et tout ça on ne limite plus la communication de WordPress avec le front mais on l'ouvre avec l'extérieur c'est à dire que n'importe quelle application n'importe quelle périphérique pourra accéder à vos données de WordPress si vous l'autorisez bien sûr et du coup chacun pourra créer ses propres applis en en chercher les informations donc pourrait faire une application native sur votre téléphone qui va aller chercher les informations de WordPress comme on le fait quand on est sur le site web de base la chose importante c'est qu'on va pouvoir l'ouvrir à beaucoup d'autres développeurs aujourd'hui dans les petits tirées rouge on a notre back end WordPress notre front end qui est gérée par PHP donc voilà il y a des avantages et des inconvénients souvent on beaucoup critiquait notre bon vieux PHP mais aujourd'hui avec cette API on va pouvoir toucher beaucoup d'autres développeurs les développeurs Java et Swift donc Android et iOS on va pouvoir toucher les développeurs web qui sont sur d'autres langages comme Python, Ruby and Rails etc puis surtout toute la communauté javascript qui est en train d'exploser avec des plateformes comme React.js Meteor, Angular etc enfin toutes les bibliothèques qui apparaissent tous les jours à s'en perdre donc voilà demain ça c'était pour moi c'est un des problèmes d'entrée des facteurs d'entrée des développeurs dire ouais WordPress c'est bien votre truc mais j'ai pas envie d'apprendre à m'en servir moi je suis développeur React votre méthodologie elle est pourrie il y en a quand même qu'ils le disent donc demain on peut leur dire il y a l'API donc tu restes avec tes langages tu restes avec tes procédures et t'as plus qu'à piocher dans l'API pour pouvoir que développer pour WordPress et ça pour moi c'est un des des avantages majeurs de l'API en résumé ce qui change c'est une communication qui est plus rapide vers l'extérieur et accessible à toute technologie plus rapide parce que l'API est censé être là pour sortir des performances meilleures qu'une requête à la base de données plus standard donc plus de développeurs comme je l'ai dit de tous les univers qui sont à la mode en ce moment dans le développement web ou pas d'ailleurs plus besoin de maîtriser le front-end c'est-à-dire qu'aujourd'hui un développeur WordPress il est obligé de connaître ce que c'est le système de template la WP query, le système de loop c'est pas super compliqué à apprendre mais ça prend quand même du temps et quand on est déjà 5 ou 6 technologies à maîtriser les gens je peux comprendre qu'ils n'ont pas envie on enlève cette barrière grâce à l'API et puis très important pour les très grosses boîtes c'est que WordPress c'est un module qui fait partie d'un plus grand workflow je vous donnerai tout à l'heure l'exemple de New York Times, ils ont leur site WordPress mais ils ont tout un autre tas d'applications qui tournent pas autour de WordPress mais ils ont un workflow global et WordPress vient s'inclure dedans grâce à l'API ce qui serait pas possible si elle n'existait pas du tout donc voilà ils ne sont pas obligés d'utiliser que WordPress, ils ont toutes leurs applications et tout communique pour que la donnée soit au bon endroit au bon moment explosion JavaScript quand on entend parler un développeur JavaScript aujourd'hui c'est voilà, le développement JavaScript je fais du réacte, c'est en réel ça n'allague pas, c'est génial, il y a des technos qui sortent tous les jours et le développeur PHP c'est un peu à l'ancienne, vous avez des vieilles technologies etc donc WordPress héritait un petit peu de cette réputation on va dire donc parmi les technologies qui sont bien prisées en ce moment, Node.js, Angular, Backbone, Amber réacte surtout voilà, donc il fallait que l'équipe de WordPress se dise tiens il faut qu'on ait plus de développeurs JavaScript d'ailleurs, Matt Mullenweg l'avait dit on veut des développeurs JavaScript il nous en manque énormément dans WordPress et du coup grâce à l'API ça l'est fait venir plus facilement l'API reste en action donc une petite démo pour montrer comment ça marche le but c'est d'envoyer une requête ça vous pouvez le faire depuis votre navigateur vers un site où l'API est ouverte une API c'est ouverte ou c'est fermée c'est à dire qu'il vous faut une authentification une clé unique pour pouvoir y accéder soit dans certains cas vous pouvez exposer l'API pour qu'elle soit ouverte et du coup si vous tapez ce genre d'adresse vous pouvez avoir des résultats en retour la première ligne par exemple va nous simplement nous demander de récupérer les derniers articles donc c'est ce que fait WordPress par défaut c'est la liste des dix derniers articles par ordre chronologique après on a des paramètres on a le per page égal 2 donc c'est qu'on veut seulement 2 articles on peut pas avoir page égal 2 pour dire on veut 2 articles mais de la page 2 et la catégorie les mots clés faire une recherche aussi donc le S avoir une page en particulier avec son identifiant et faire des recherches aussi par metaquier, meta-value pour ceux qui font un petit peu de développement de theme WordPress c'est tout simplement ni plus ni moins que ce que vous faites déjà avec la WP query car vous avez besoin de faire une requête personnalisée vous avez tous les paramètres qui existent et du coup l'API elle récupère exactement les mêmes paramètres donc en utilisant les paramètres c'est écrit d'une manière un peu différente mais du coup vous avez la même logique à récupérer le résultat c'est un fichier JSON du coup ça vous renvoyait en fait l'identifiant, la date, l'auteur le contenu de l'article l'image à la une etc etc et du coup ça veut l'afficher dans un fichier JSON comme ça donc JavaScript il est capable de le décoder et de récupérer les données très facilement PHP aussi et la plupart des langages de programmation sont faits pour que le JSON soit très facile à manipuler disons que le JSON pour ceux qui ne connaissent pas trop bien c'est le remplaçant du XML qui est un petit peu moins utilisé il y a encore beaucoup d'API qui vous sortent les choses en XML WordPress a décidé d'utiliser le JSON si je vous fais une toute petite démo j'ai fait un petit blog là avec 4 ou 5 articles voilà dernière fois que j'ai fait la démo c'est juste avant manger donc ça fait un petit peu fin là ça va on est tous repus donc ça devrait le faire donc voilà j'ai mon site WordPress tout à fait standard et de l'autre côté je tape l'URL avec poste derrière et quand j'affiche du coup j'ai mon j'ai mon résultat comme ça qui s'affiche alors là il est mis en forme si vous essayez chez vous ça sera un gros bloc de texte tout noir qui n'est pas mis en forme je vous conseille un petit extension pour votre navigateur c'est pret-json ou un truc comme ça qui va automatiquement détecter quand c'est du JSON et du coup le mettre en forme avec des couleurs pour que vous le plugz plus facilement à ce niveau là c'est pas trop mal je m'étais fait une petite appli enfin une page web dans le thème pour pouvoir tester justement ces différentes choses et du coup quand je clique dessus là ça va envoyer le résultat donc avec une requête à jax sans javascript et du coup on peut voir les résultats aussi qui marchent alors pour se faire si vous les testez comme ça chez vous très rapidement il faudrait que la méthode la plus simple c'est d'installer le plugin à la paix parce que avant que ce soit un projet intégré à wordpress c'était sous forme de plugin donc c'est une extension wordpress vous téléchargez sur le repo, sur le répertoire et du coup après vous pouvez tester parce que dans wordpress 4.4 comme je vous ai dit les routes ne sont pas exposées les routes c'est c'est là-haut c'est la commande qui nous permet d'accéder à la paix ne pas être exposé ça veut dire tout simplement que si vous le tapez un wordpress ne va pas l'interpréter il est complètement bloqué donc ça nécessiterait pour vous de créer chacune des routes pour pouvoir interpréter les résultats et vous les renvoyer donc si vous les testez quelque chose qui est déjà tout fait ce sera plutôt le plugin qui vous qui vous aidera alors maintenant pour repartir un petit peu sur les enjeux je vous présente 9 idées de comment la paix va changer les choses et qu'est ce qu'on va pouvoir faire avec qui change vraiment de ce qu'on fait aujourd'hui avec wordpress pour les sceptiques la première chose c'est qu'on va pouvoir faire des thèmes qui sont basés sur javascript et pas que sur php, html et css si vous avez suivi un petit peu l'actualité javascript en ce moment il y a React.js de facebook qui explose bien et qui vous permet en fait de faire une page en temps réel d'avoir du rechargement de données etc sans rechargement de page tout est en live et là dessus je pense que demain on aura beaucoup plus de thèmes qui seront faits comme ça le plus simple c'est de passer par la pays il y a un thème expérimental qui a été proposé par automatique qui s'appelle picar vous pouvez télécharger cet adresse il vous faudra des modules comme npm, gulp qui seront installés sur votre ordinateur moi je suis pas forcément développeur javascript à la base mais c'est pas ultra compliqué à installer il suffit de suivre les instructions après vous pourrez expérimenter un thème qui est fait complètement en javascript rechargement en réel ça veut dire que pas de rechargement de page ça veut dire que votre site est beaucoup plus réactif c'est un peu comme une application web où il n'y a pas de rechargement tout est fluide, tout est plus rapide la même lignée les single page apps c'est à peu près la même chose, c'est disons que si vous faites une application à partir de votre WordPress plutôt une application web c'est un exemple fictif imaginons que vous voulez faire un annuaire des docteurs avec un moteur de recherche avec une carte pour pouvoir trouver le docteur le plus proche etc dans ces cas là comme c'est de l'application, c'est du plein écran etc si à chaque fois il faut recharger une page les gens ils commencent à avoir l'habitude de facebook, twitter tout est rapide en utilisant en utilisant du javascript et l'API du coup ça sera beaucoup plus rapide et là pour votre API elle sera vraiment considérée comme une application web en une page Calypso je sais pas si vous en avez entendu parler en fin d'année dernière qu'elle fait pas mal de bruit sur WordPress.com donc les gars chez automatique ils ont dit on va complètement refaire notre interface de notre interface d'admine de WordPress.com et du coup maintenant elle ressemble à ça du coup elle ressemble moins à ce qu'on a sur WordPress.org et Calypso en fait tire partie complètement de l'API WordPress pour pouvoir vous proposer cette appli qui est vraiment réactive je sais pas si vous avez pu l'essayer si vous avez un blog sur WordPress.com etc c'est super fluide ça passe bien il y a maintenant un menu sur lequel il va vous suggérer des articles d'autres blogs qui pourraient vous intéresser donc c'est plus qu'un tableau de bord pour écrire votre contenu c'est aussi un tableau de bord de découverte d'autres articles de la communauté WordPress.com si vous avez un blog sur WordPress.org hébergé chez vous vous pouvez grâce à Jetpack avoir access à cette interface donc du coup si vous voulez l'essayer même sur votre site ça sera par contre limité à de la rédaction tout simple parce que là dedans dans cette interface il n'y a pas vos champs personnels il n'y a pas l'accès aux plugins etc donc c'est vraiment si vous voulez un outil pour faire de la rédaction ils l'ont sorti sous forme d'applications native mac qui est en fait une webview et ils l'ont sorti sur WordPress.com quand vous vous connectez c'est là où du coup toute la communauté WordPress s'est rendu compte qu'effectivement une API c'est super intéressant et du coup c'est le temps réel désormais donc ils ont fait la première expérience avec ça et on a bien sûr qu'il n'y a pas plus l'interfaçon si il faut se reprendre un petit peu ces marques mais en soi oui la réactivité elle est énorme des applications natives donc on a pu le tester sur un projet un grandeur nature du coup on a un site WordPress un blog, là l'exemple c'est Golden Moustache vous devez sûrement le connaître et du coup on a des développeurs qui ont fait les applications natives pour iOS et Android la API WordPress donc on leur a fourni nous les routes sur lesquelles il devait il devait taper pour pouvoir récupérer des données et du coup voilà, deux applications natives le site web et ça communique tout avec la API REST donc demain ça sera encore plus facile de faire des applications natives grâce à cette API il y a 2-3 autres projets qui passent par d'autres systèmes il y a WPAP Ninja WPAP Kit il y a de faire du mobile natif sans passer par cette API ils ont une API aussi mais quand ils ont commencé à créer le projet elle existait pas donc ils ont dû créer la leur un exemple que je pense qui pourrait être très viable commercialement sur mon flux twitter l'autre jour j'ai eu la pub pour un truc qui s'appelle Contentful et qui se vendent comme des gars qui proposent un CMS pour les applications natives mobiles imaginons que vous avez une application mobile avec soit du contenu en vente vous avez besoin d'un outil pour l'administrer ce contenu et du coup ils ont fait un CMS qui est vraiment orienté pour les applications mobiles mais pourquoi on ne pourrait pas demain nous créer un concurrent qui soit fait en WordPress et qui propose du coup ces clients de dire vous allez pouvoir gérer le contenu de votre application mobile mais directement à partir d'une interface WordPress et du coup je pense que ça pourrait être un projet qui est intéressant c'est totalement faisable custom panel aussi on en parle de plus en plus parce que les sites deviennent de plus en plus gros avec des besoins de plus en plus évolués et vous avez les gens qui vont administrer les différentes parties du site ils auront pas le même rôle c'est à dire qu'il y en a qui vont rédiger le contenu mais il y en a qui vont gérer les produits quand c'est un city commerce et des fois quand on a fait un truc pour un client avec je sais pas par exemple un système de devis de gestion de devis etc la personne qui va peut être gérer les devis avec une interface dans son admin WordPress ouais ok c'est cool mais le commentaire qu'on a toujours de la part de ces gens c'est quand ils se connectent pour la première fois à l'admin WordPress il y a beaucoup d'éléments non c'est ergonomique hein WordPress c'est vrai que la première fois il y a beaucoup de choses qui s'affichent à l'écran pour quelqu'un qui doit gérer des choses enfin très peu de choses ça lui fait beaucoup c'est vrai donc en fait on peut très bien créer un panneau d'administration qui soit même hébergé ailleurs ou quoi qui permet par exemple là dans ce cas il y a beaucoup de tables dans un restaurant et de placements de tables et de réservations à l'avance du coup le restaurateur en fait il n'a pas forcément envie de se connecter à son WordPress pour pouvoir gérer les réservations et pourrait très bien grâce à l'API du coup on lui fait un tableau de bord personnalisé où il peut juste gérer ces tables comme ça ça se dispatch ce que je vais vous montrer par là c'est que demain WordPress c'est une base pour stocker du contenu et l'afficher d'admin ou en fronte les façons dont on va afficher ces choses là et du coup on va pouvoir se personnaliser sur des besoins très spécifiques et puis bon le cas simple imaginons une boutique qui commerce un grand comme LDLC ou n'importe qui d'autre qui se disent bah ouais on voudrait gérer des actus mais bon c'est long à développer à la main et là typiquement LDLC je crois que leur news c'est ce bloc là dans guide actu ou c'est un peu de sous mais c'est un tout petit bloc on sent que c'est ultra limité qu'il n'y a pas la puissance de publication de WordPress derrière et du coup on pourrait très bien se dire bah on vous installe un WordPress qui est bergé à côté et vous, peu importe le langage que vous avez utilisé, vous allez utiliser l'API pour aller chercher la liste des derniers articles et puis pour les afficher directement sur le site eux ils utilisent la puissance de publication de WordPress les catégorisations, mots-clés toutes ces choses là qui font la puissance de notre CMS préféré et du coup ils peuvent l'intégrer très facilement sur leur site internet sans avoir à lancer des chantiers impossibles et qui vont être très coûteux et prendre énormément de temps et puis les éditeurs de contenu front on a beaucoup de plateformes maintenant qui permettent d'éditer du contenu en direct sur la partie front WordPress on a des constructeurs de pages il y en a qui arrivent un petit peu à ça je trouve subjectivement qu'on est un petit peu à l'amour, qu'on a un petit peu du retard à attraper. Grâce à l'API on va pouvoir combler ce retard très facilement parce qu'un développeur d'extension va pouvoir faire un système front très bien fait et pour l'enregistrement des données il passera par l'API je ne voulais pas dire au début mais l'API elle permet de lire des données mais elle permet d'en écrire aussi si vous avez l'autorisation donc rien n'empêche en fait que la personne n'aille pas ces modifications en front et du coup quand elle enregistre ça envoie à WordPress toutes les modifications via l'API pour l'intégration on a pas mal de projets qui ont décidé de de faire des petites extensions pour qu'on puisse communiquer facilement avec l'API notamment c'est la Ravel qui a quel plus d'avance qui propose déjà plusieurs modules comme Corsale, WordPress, tout la Ravel etc. qui vous permettent donc de faire une communication avec l'API et puis de rester dans la façon de programmer qu'on l'habitude les gars qui sont sur la Ravel avec des fonctions comme ça ou de points publics etc etc voilà et je vous ai mis un lien vers un article qui en parle très très bien Javascript aussi il y a un module Node qui permet justement aussi de de frapper un petit peu l'API WordPress pour pouvoir créer des fonctions en restant un petit peu sur la façon d'écrire de WordPress donc là dessus c'est tout fait pour simplifier n'importe quel développeur qui veut demain arriver sur WordPress je vais développer pour WordPress sans apprendre WordPress et puis toutes les fonctions comme Corsale etc en fait peu importe le langage de programmation s'il n'y a pas de module qui a été fait c'est en quelque sorte compatible déjà puisqu'il vous suffit d'une fonction qui est capable de faire une requête HTTP donc de joindre une URL à partir de ce moment là toutes les technologies sont capables de le faire de manière native sans aucun souci quand j'ai bossé avec les développeurs pour Golden Moustache le développeur je lui ai dit ça c'est les routes, est-ce que tu as besoin de quelque chose pour tes requêtes ou quoi ? il fait non non il n'y a pas de souci moi je sais faire les requêtes, je récupère les infos sur iOS on a de quoi récupérer donner en JSON et les traiter donc là dessus c'est mon métier je connais et du coup la communication entre deux langages de programmation différents et deux logiques complètement différentes c'est super bien passé alors qu'un d'autres projets dans le passé c'était pas vraiment ça il y a du monde de trois études de cas de sites qui sont vrais, qui existent et qui utilisent l'API en production il y a déjà Nomad Base qui est fait par les gars de Human Made encore c'est là où il y a Ryan McQ qui développe le coeur de l'API ils se sont dit on va faire une carte du monde où les freelance développeurs nomades indiquent où ils sont en ce moment comme ça ça permet de savoir où vous pour pouvoir se rencontrer ou pour donner des astuces moi je suis au fin fond de l'Espagne je trouve un spot bien avec de la connexion je vous conseille etc et du coup c'est une application web ça ressemble pas du tout à WordPress quand vous vous connectez en fait vous accédez pas à l'admine c'est vraiment eux ils ont fait une interface front et back pour vous du coup aucun moment vous pouvez voir que c'est WordPress si vous ne le savez pas en fait vous passez sur le site et vous dites ah ouais il est sympa il y a en stack les technologies qu'ils ont utilisé donc il y a WordPress, l'API reste et React.js donc pour la partie front qui permet de faire l'affichage en temps réel toutes les choses comme ça qui font que c'est super fluide il y a Urplan qui utilise l'API l'API reste alors Urplan lui même n'est pas développé en WordPress à la base ils se sont ils ont fait ça en symphonie et toute leur application elle marche comme ça par contre ils ont eu un souci des sites avec du contenu statique et que vous le versionnez si vous voulez changer le moindre texte il va falloir faire un comite poucher la dernière version pour pouvoir modifier ne serait-ce que un texte ou deux et selon le process de l'entreprise des fois une mise en prod c'est super long parce qu'il y a quand même des étapes à vérifier etc et puis si il faut changer de texte et qu'il faut faire une mise en prod le vendredi et qu'ils ont dit bah non le vendredi on fait pas de mise en prod on n'est pas suicidaires mais il faut attendre au lundi d'ouvre faute d'orthographe quoi ça serait un peu bête du coup ils se sont dit bah on va prendre WordPress on va l'utiliser à côté aussi et en fait simplement on va pouvoir gérer tout nos textes depuis WordPress et comme ça le code qui est versionné là c'est juste le HTML de la page, il n'y a pas de contenu dedans et comme ça ils peuvent comiter ils peuvent remettre en production ou quoi pour faire des modifs techniques mais au moins le contenu il est géré avec WordPress et il les géré bien donc là encore un exemple qui démonte bien c'est si on a développé une application avec symphony derrière on peut rajouter un WordPress à côté pour pouvoir gérer le contenu pour pouvoir simplifier pas mal de choses New York Times aussi un bel exemple alors eux dans leurs conférences ils ont expliqué effectivement ils ont un procès c'est quand même assez assez énorme qui est assez fou assez courageux aussi parce que les développeurs là bas ils ne doivent pas s'ennuyer ouais non c'est assez énorme je vous donnerai les liens pour pouvoir aller voir ça mais c'est quand même il en parle 40 minutes le gars donc en fait ils ont une application qui a fait maison déjà à la base et puis ils ont rajouté du WordPress aussi en gros ils ont leur journal normal ils ont aussi des blogs à part tenu par les journalistes ou par des indépendants et ils ont aussi tout ce qui est événement en live donc les lives sportifs ou les élections ou présentation du dernier iPhone tout ce qui a besoin en fait un petit peu d'interaction et du coup ils utilisent WordPress ils utilisent l'API WordPress React les websockets pour faire la communication en temps réel avec le HTML5 et même Slack c'est-à-dire que le gars qui fait son live il est pas obligé d'aller sur son interface de New York Times il est sur son ordinateur et à Slack qui est lancé il a une channel spécial Slack pour ceux qui connaissent pas c'est un logiciel de messagerie pour des groupes ou pour les entreprises qui a eu une explosion en 2015 assez urissante donc il y a énormément d'entreprises qui utilisent ça pour faire de la communication en interne et l'avantage c'est qu'il y a plein de on peut brancher plein d'extensions dessus pour faire des automatisations c'est vraiment super et du coup le journaliste peut directement publier sur Slack donc dès qu'il met un message sur le Slack il appuie sur entrer ça se met sur le chat mais c'est envoyé aussi sur l'API WordPress pour être pour être mis sur le site en direct donc voilà il y a WordPress après il y a des systèmes de cache pour que ce soit parce qu'ils ont tellement de visiteurs il y a tout un système d'optimisation derrière c'est une belle usine mais WordPress c'est une petite partie du grand rouage et il y a tout le reste qui gravite à côté autour et puis bah voilà ça marche pour eux ils considèrent WordPress comme un web service plus que comme un site web comme nous on a l'habitude de le considérer c'est une étape de leur process donc je trouvais ça que c'était super intéressant de penser les choses comme ça et assez inventif Wired aussi donc un petit peu dans la même logique ils l'ont utilisé pour l'application mobile donc pour faire l'application Wired donc qui se connecte à leur WordPress pour l'API ils l'utilisent aussi pour faire une copie de leur site vers la pré-prod quand ils veulent en fait prendre un article essayer d'autres choses ou modifier des trucs techniquement ils ont une commande qui permet de faire un import export en fait de la prod vers la pré-production d'autres utiliseraient WPCali par exemple voilà je vous dis l'API sert pas à ça il faut aussi une liaison avec cela qui ont eu la même idée ils ont un server node qui va gérer toutes les interactions entre les deux et puis ils disent bah dans le futur on aimerait en fait pouvoir faire des custom des pages d'accueil personnalisés en fonction de ce qu'ils aiment lire les gens et que du coup cette personnalisation ça demande pas mal de requêtes etc donc voilà avec l'API en niveau performance ça sera déjà beaucoup plus facile pour le faire ils voudraient aussi qu'à terme même on puisse comme si on est sur un iPad dire bah voilà je suis sur ma catégorie 1 peut-être les infos du monde et je fais un glisser vers la droite et là du coup j'ai une deuxième catégorie qui s'affiche donc tout a été récupéré avec l'API pour que ce soit plus rapide et qu'il n'y ait pas de rechargement The Times aussi tous les grands journaux se rencontrent dans les équipes techniques derrière donc ils se mettent à faire des choses pour notamment pour David Bowie ils étaient en train de développer à ce moment-là l'API mais c'était rien de finalisé et en fait un des journalistes un des développeurs le journaliste il dit mais j'ai besoin de récupérer un petit peu tout ce qu'on a publié dans le temps sur le chanteur et pour en faire en fait un article un mini-site même dédié il fait tous les articles qu'on a publiés et faire la recherche pour clé le moteur de recherche c'est super compliqué et en fait le gars qui posait sur l'API il a dit en fait avec l'API je vais pouvoir tout simplifier les choses faire remonter toutes ces informations automatiquement du coup ça a bien servi ça a été rapide et du coup ils ont pu faire le mini-site dédié avec par année en fait qu'est-ce qu'il a fait le chanteur etc depuis dans sa carrière les albums etc et le gars disait qu'il a réussi à faire ça en un temps record au lieu d'avoir fait un développement spécifique sur mesure qui a repris des semaines et des semaines de développement il fallait que ce soit publié dans les 4-5 jours qui suivent et du coup il a réussi à le faire grâce à cet API The Times encore ils ont fait un petit éditeur visuel, front pour en fait les journalistes aujourd'hui le visuel c'est important quand vous éditez votre article il faut que ça ressemble à quelque chose que ce soit sur mobile tablette ou sur ordinateur en fait ils ont cette interface là qui leur permet d'écrire le contenu de mettre les images etc et ils le voient exactement comme le verra l'internaute qui lit ils peuvent vérifier tout de suite en temps réel si ça rend bien sur mobile ils peuvent changer les formats d'image quand on change de périphérique comme ça au moins ils adaptent et du coup grâce à ce petit truc qui est géré aussi par l'API les journalistes pour écrire ils sont super rapides, ils font des nuits en page ils sont vraiment derrière ça tient la route il y a aussi NPM c'est Node Package Manager pour ceux qui utilisent Node.js ils ont une partie de leur site qui est fait en WordPress je ne m'y attendais pas du tout ils s'en servent pour stocker tous les paquets donc NPM pour JavaScript c'est un petit peu des modules d'extension des petits paquets qui vont faire rajouter du coup ils vous affichent tous les paquets il y a aussi toute une documentation qui est assez conséquente la documentation et ce système est géré par WordPress et son API ils peuvent facilement rajouter des champs et du coup quand vous vous allez publier votre propre paquet vous allez pouvoir remplir toutes les informations ça stock via l'API dans un WordPress et puis voilà c'est assez rare quand même qu'une communauté JavaScript utilise ce genre de choses donc ça montre bien qu'il y a quand même une réunification qui est en cours voilà pour un petit peu tout ce qui est étude de cas et puis les enjeux pour ceux qui voudraient un petit peu du technique qui se dirait mais comment on va faire pour sécuriser ça parce qu'effectivement si vous faites une API que tout le monde peut venir publer dedans ça risque de faire un petit peu de la perte alors évidemment il y a deux types d'authentification et aujourd'hui dans la WordPress la version 4.4 il y a l'authentification par cookie qui est déjà en place la 4.4 elle est là pour si jamais vous voulez communiquer en API à partir de votre thème vers WordPress ou votre extension vers WordPress donc ça reste vraiment dans le cadre de votre site internet c'est pas extérieur du coup dans ces cas là, qu'est ce qu'on fait dans WordPress quand on veut authentifier et sécuriser une transaction de données on utilise le cookie grâce à un code unique généré qu'on appelle un nonce ça c'est le code basique que vous pouvez utiliser qui est ultra simple qui vous permet d'un côté en JavaScript de récupérer le nonce et de le renvoyer pour authentifier la requête et en PHP de pouvoir le générer il est valide vraiment que pour une page quelqu'un qui referait la même requête d'un autre site il n'aurait pas accès parce qu'il n'a pas eu son code unique généré ce qui va encore plus nous intéresser c'est l'authentification pour une connexion externe par exemple je développe une application mobile sur iOS et j'ai envie de connecter à mon site WordPress par défaut je ne sais pas d'authentification donc c'est tout est public tout est ouvert quand j'ai tout est ouvert vous n'avez pas accès à l'écriture ou les choses comme ça il y a quand même des choses qui sont bloquées par défaut qu'il faudra développer donc là en fait ce qui recommande WordPress c'est l'authentification par haute de connexion qui est ouvert et du coup grâce à ça vous l'installez sur votre serveur vous générez des clés secrètes et c'est pas des vrais clés je tiens à te le dire c'est quoi voilà ah bon quand se le disent et du coup une fois que vous avez généré ça vous pouvez donner ça à votre développeur vous avez un accès grâce à cette clé donc il y a l'authentification qui se fait il y a un troisième modèle de connexion c'est l'authentification serveur basique pour ceux qui ne peuvent pas installer haute ou quoi mais ça veut dire que dans chaque requête que vous faites passer il y a le dans le header il y a le nom d'utilisateur et le mot de passe qui ne passe pas en clair mais par contre du coup il est dans votre code de votre application donc c'est pas super en termes de sécurité quoi quelques petits hooks et filtres pour aller plus loin par défaut en fait quand vous faites des requêtes pas toutes ne sont autorisées ils ont décidé d'en bloquer certaines alors c'est peut-être soumis à changer ça parce qu'il y a eu énormément de changements depuis le début il y en a encore pour en avoir discuté avec Nicolas qui vous présente la review technique après il y a encore beaucoup de changements entrevoir dans la façon de gérer la pays donc c'est à faire à suivre mais pour l'instant en fait je peux pas faire une requête sur une meta qui ou une meta value ou sur une date query la date query c'est utile si vous voulez récupérer des articles qui sont antérieurs ou postérieurs en particulier donc si vous voulez le débloquer il y a ce crochet là qui vous permet de dire je vais pouvoir faire des meta qui, des meta value meta compare etc je me rends compte que je les utilise assez régulièrement selon les projets et du coup c'est quand même pratique de pouvoir les exposer à la pays les custom fields aussi ça serait quand même bien de pouvoir les envoyer les champs personnalisés c'est ceux qui sont en bas de votre page soit vous l'utilisez de manière native, l'interface est pas super c'est quand même que vous utilisez une extension comme advanced custom field qui vous permet de faire plein de champs différents dans votre appui effectivement je n'ai complètement pas pensé la première fois que le développeur il fait sa requête et regarde dans ses résultats il manque certaines informations évidemment c'est mes custom fields donc en fait vous avez aussi un crochet pour dire là tu vas me renvoyer telle meta, telle meta, telle meta et tu les envoies aussi avec la requête c'est une des méthodes il y en a d'autres simple, je sais qu'il y a une extension aussi qui est sorti récemment qui vous permet automatiquement d'envoyer avec la paye tous les champs ACF vers votre application la prise en charge aussi des custom post-tips car vous allez créer un type de publication par exemple un type de publication livre vous allez la déclarer comme ça donc ça c'est un code que vous reconnaissez peut-être si vous avez l'habitude de faire du développement et en fait si vous allez rajouter simplement les trois dernières lignes ne sont pas tout obligatoires mais show in rest c'est la plus importante si vous la passez à verrer ça veut dire que vous allez pouvoir faire des routes vers votre type de publication et du coup récupérer les informations de votre type livre et ça c'est le petit bout de code on a plus beaucoup de temps j'ai pas assez rapidement dessus pour pouvoir créer vos propres routes donc comme je vous ai dit dans WordPress 4.4 si vous voulez que ça marche ce système pour créer vos routes et après vous pouvez vous vous faites demain une extension vous allez pouvoir créer vos routes vers l'extension en elle même comme ça les gens pourront communiquer avec votre extension facilement c'est pas forcément à chaque fois aller piocher ou écrire dans WordPress ça peut être fait avec les extensions dernier petit détail aussi on a des namespace comme souvent en programmation qui vous permet de dire à qui appartient les routes par exemple par défaut là on est sur WP slash v2 du coup ça veut dire on a un version 2 de l'API et du coup c'est là dessus qu'on va piocher pour aller chercher dans du WordPress natif après vous pouvez vous créer des routes dans votre extension avec différents numéros de version et du coup vous les appelez mypluginv1 mypluginv2 etc si vous avez déjà fait des requêtes vers des API et des services en fait vous pouvez vous rendre compte que les numéros de version ils changent des fois des fois faites-vous que vous vous dites attention vous utilisez l'ancien code de l'API dans 3 mois on arrête le support il va falloir passer sur la nouvelle version donc ça ça permet en fait de pointer vers des nouveaux process il y a aussi beaucoup de discussions autour de WP CLI et WP API WP CLI c'est command line interface c'est ce qui vous permet de faire à partir de la ligne de command donc sur votre serveur par exemple j'avais fait une présentation au WP tech en 2014 et on a une un peu plus tard cet après midi ou demain tout à l'heure si vous avez jamais vu WP CLI je vous conseille c'est vraiment super moi j'en ai fait un script qui vous permet d'installer WordPress en un clic ça va télécharger WordPress, installer des compressés installer vos plugins préférés enlever les articles de base qui sont présents dans WordPress télécharger votre thème de base l'activer lancer votre navigateur, lancer votre serveur et lancer votre editor de code vous faites un clic et tout ça qui se fait et c'est vraiment génial du coup WP CLI voit l'intérêt que WP API c'est bien donc du coup ils vont faire aussi des commandes qui vont permettre de réunir un petit peu les deux et de faire en sorte que la ligne de commande soit un peu plus compatible avec ce qu'on fait avec l'API comme ça vous avez qu'une seule logique pour importe la technique que vous utilisez donc moi je vous conseille sincèrement si vous faites pas beaucoup de développement je suis pas un développeur PHP hyper expert ni javascript ou quoi que ce soit je fais beaucoup de thème WordPress mais ce genre de sauce c'est quand même super intéressant ça peut vous aurir plein de portes et pour essayer ça c'est vraiment pas compliqué donc quand je publierais mes slides vous aurez tous ces liens c'est ce qui m'a servi pour apprendre donc il y a des tutos, il y a des articles la documentation officielle aussi la discussion sur le coeur etc etc il y a deux e-books qui sont vraiment super que je vous conseille alors là c'est Torque et WPangine qui l'ont fait et il est vraiment technique c'est à dire qu'il va vous expliquer comment faire vos requêtes pour pouvoir écrire un article dans WordPress ou récupérer les infos faire un petit éditeur frontaine de ultra simple gérer les utilisateurs les métadonnées etc donc c'est des cas d'exemple en fait super pratique et que vous allez vraiment avoir l'utilisation parce que le bruit est à moitié fait et talking to 25% web désolé pour l'anglais attends j'ai un accent de bon c'est l'équipe de HumanMade où il y a Ryan McQ, un des corps développeurs qui l'ont écrit en fait il est super simple à lire même s'il y a une cinquantaine de pages qui expliquent plus en profondeur qu'est-ce que c'est qu'une API les enjeux etc je me suis pas mal inspiré c'est vraiment intéressant si un jour un client dit voilà pour votre projet c'est API REST mais je sais pas trop vous le faites lire ça c'est les meilleurs arguments de manière ultra synthétique que vous pourrez leur donner et pour donner l'importance de cet API REST une conférence comme aujourd'hui mais qui a été dédiée à l'API donc en fait c'était sur une journée à Londres Jenny Beaumont elle y allait d'ailleurs je la remercie pour les petites ressources qu'elle m'a filé mais du coup ils sont passés une journée à parler genre le New York Time qui expliquait son process, qu'est-ce que l'API REST le futur etc et du coup je trouve que c'est très bien ça monte un petit peu l'ampleur de la chose avec vous d'en parler après et d'en débattre, de connaître votre avis est-ce que ça vous paraît être le truc de demain ou est-ce que ça va être l'effet de mode et puis on en parlera plus parce qu'il y a deux écoles là dessus et j'aimerais bien avoir la vie d'un petit peu tout le monde et du coup si déjà maintenant vous avez des questions ça avec plaisir merci beaucoup merci Maxime alors les questions pas trop techniques pour le développeur frontend je voulais savoir quand il est-il du référencement lorsqu'on a des articles par exemple un thème en JavaScript vous avez évoqué est-ce qu'il y a des choses qui ont été mises en place ou est-ce que pour l'instant c'est pas un sujet ça va être plutôt le problème il n'est pas pour nous world pressien il va être pour le développeur frontend mais aujourd'hui il y a énormément d'applications qui tournent en one page il est capable de lire il y a eu une époque où Google prenait ni le CSS ni le JavaScript aujourd'hui il est capable de le prendre il va lire l'application comme un humain va le faire du coup quand tu changes de page l'URL elle change grâce au push state et l'histoire HTML5 qui l'a rendu capable du coup maintenant il n'y a pas de soucis donc selon la technologie employée réacte ou quoi ils ont ce problème tous les jours il n'y a pas de soucis tu perdras pas en référencement on ne relance pas du tout d'accord et deuxième question qu'en est-il des modules est-ce qu'il y a des modules des plugins world press qui vont être adaptés pour l'API l'objectif c'est quand même que les développeurs d'extensions se disent on va faire une intégration aussi API pour pouvoir communiquer il y a déjà des années qui ont une API en place que tu peux utiliser ou qui permettent de communiquer entre leurs différentes extensions pour que ce soit plus simple donc ouais c'est le but Matt Mullanweg il a dit si à la fin de l'année on n'a pas 12 extensions par jour ou par mois non s'il n'y a pas 12 extensions par mois qui sortent avec une prise en charge de l'API on aura échoué à la promouvoir donc c'est le but bonjour pour l'instant d'après ce que tu disais en étape de développement cette partie reste c'est pas finalisé ouais plus ou moins en fait l'intégration ils ont décidé de la faire en deux étapes mais en gros tu peux commencer à l'utiliser dès aujourd'hui en créant tes routes c'est à dire que dans ton extension ou dans ton world press tu crées ta route manuellement en disant je vais créer une route qui va me permettre d'accéder par exemple de renvoyer la liste des 5 derniers articles avec les auteurs qui sont liés peut-être des infos qui sont liés à l'auteur donc tu peux créer tes routes manuellement parce que par rapport au plugin existant oui est-ce qu'il faut plutôt utiliser le plugin existant qui apporte plus ou alors déjà passer si tu veux un truc plus complet le plugin il le sera ouais en attendant de la version définitive si tu veux pouvoir créer une application android par exemple avec le plugin en moins tu as déjà toutes les routes qui sont exposées donc le travail sera plus rapide après tu pourrais très bien dire on va sécuriser à mort et on va simplement écouter qu'on a besoin donc ça tu les recodes très rapidement avec ce qu'ils ont mis en place c'est une question de choix mais c'est vrai que pour l'instant il n'y a qu'une partie qui est intégrée elle coeur vraiment de la pays et pas tout en entier ok merci merci pour cette conférence désolé d'avoir fait courir du coup j'avais une question on peut avoir parfois des petits besoins de générer du JSON dans le site ou récupérer du coup d'autres infos comme tu l'as montré dans la conférence est-ce que à ton avis ça serait toujours utile de passer par la payée reste actuelle ou de générer une action Ajax et de faire un return d'un arrêt en JSON encode PHP quelque chose de beaucoup plus simple pour installer et tout bien c'est sûr que ce sera moins modulable et moins flexible mais est-ce que tu penses que pour des petits besoins vaut mieux passer par ce système ou dans tous les cas aller vers la payée c'est ce que m'a demandé un gars la dernière fois il m'a dit c'est tout con c'est rien la payée en 5 lignes de code en PHP je peux te faire une sortie en JSON et puis voilà oui donc effectivement tu pourrais développer ton petit code juste pour envoyer une petite donnée aujourd'hui autant utiliser la technique on va dire officielle puisque du coup comme t'as accès au route tu peux créer ta petite route avec le hook que je t'ai montré tout à l'heure tu renvoies toi juste les données que t'as besoin d'envoyer puis au moins t'as un accès officiel à la payée puisque la payée c'est bien plus que juste un renvoi de données il y a toute une infrastructure derrière pour la performance, la sécurité etc donc autant t'appuyer là dessus et au final ça te prendra pas bien plus de temps peut-être un peu plus de lignes de code bon aujourd'hui on est plus à ça près ce qu'on sait c'est d'utiliser le code mettre ta sortie et la renvoyer par une route de la payée quoi au moins t'es propre si jamais le projet change de change de développeur ou quoi le mec au moins il va pas reprendre encore une deuxième fois un code maison ça je peux te dire que même pour travailler pour des grands groupes à chaque fois que je reprends un thème j'ai envie de pleurer parce que les mecs ils auront réinventé WordPress ou la roue t'as une fonction pour afficher tes données non bon on peut utiliser WP query on va se faire une fonction en maison derrière comme ça le prochain développeur va bien rigoler je l'ai vécu pour ça maintenant je ne touche plus le code des autres à part s'il est bien fait bonjour moi j'ai une question on a vu que c'était un petit peu tricky pour les custom post time et les meta est-ce qu'on peut aussi exporter des taxonomies un menu oui alors l'objectif à terme c'est que tout ce que tu peux faire toi dans l'admine ce soit accessible à partir de l'API avec les méthodes WordPress aujourd'hui il n'y a pas tout c'est un boulot énorme ils sont quatre corps développeurs pour un boulot énorme donc c'est pour ça que ça prend du temps mais ils étaient pour se dire on va sortir juste les fonctionnalités principales accéder à des articles écrire des articles, accéder aux taxonomies aux custom post time aux utilisateurs etc tous les trucs les plus principaux et en fait c'était le sujet de l'angle là sur le Slack hier Matt il disait non mais moi je veux une API j'ai vendu ça à dernière conférence j'ai dit on arrête tout ce PHP on se met au JavaScript l'API c'est le futur c'est l'avenir etc et vous me dites derrière que vous n'êtes pas foutu de faire toutes les fonctions on a API il fait mon écartre on travaille gratôt je te rappelle on est contributeur du coup ça fait un petit peu l'attention à terme tu pourras normalement tout faire avec l'API merci bonjour bon en fait c'est un peu la suite de la question d'avant ça fait un moment que je m'intéresse à l'API mais j'ai pas pris le temps de regarder ni de contribuer juste pour m'économiser le temps de chercher tout de suite mais effectivement je sais que la finalité c'est de tout implémenter tu sais où on est l'avancement du support multi-site sur l'API le multi-site il est quand même pris en compte qu'est-ce que tu as demandé au prochain speaker c'est peut-être un peu plus ça commence il y a encore du boulot c'est quand même vachement technique mais ça commence savoir exactement où ça en est c'est un peu difficile je regardais sur les liens que tu as mis dans tes slides je pense que ça va aller en s'améliorant j'espère ça devrait aller en s'améliorant pas une réponse très technique mais bon à des fautes mieux tout bon ? merci Maxime