Top Banner
WP API : LA REVIEW TECHNIQUE WORDCAMP PARIS 2016
64

Word camp paris 2016

Jan 21, 2017

Download

Technology

Nicolas Juen
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Word camp paris 2016

WP API : LA REVIEW TECHNIQUEWORDCAMP PARIS 2016

Page 2: Word camp paris 2016

QUI SUIS-JE ?Développeur PHP et JavaScriptDéveloppeur avec WordPress depuis 6 ansDirecteur technique à @be_api

Page 3: Word camp paris 2016

RESTUn ensemble de bonne pratiques pour la construction d'une

API

Chaque contenu est défini comme une ressourceUtilisation des verbes HTTPDes "routes" claires et formatées

Page 4: Word camp paris 2016

RÉCUPÉRER LES DERNIERSARTICLES

GET monsite.fr/wp­json/wp/v2/posts

Page 5: Word camp paris 2016
Page 6: Word camp paris 2016

RÉCUPÉRER LE CONTENU D'UNARTICLE

GET monsite.fr/wp­json/wp/v2/posts/15/

Page 7: Word camp paris 2016
Page 8: Word camp paris 2016

METTRE À JOUR UN CONTENUPOST|PUT|PATCH monsite.fr/wp­json/wp/v2/posts/15/

Page 9: Word camp paris 2016

4.4 -> 4.5

LA WP APILe projet

ou pas...

Page 10: Word camp paris 2016

3 CLASSES 4.4WP_REST_ServerWP_REST_RequestWP_REST_Response

Page 11: Word camp paris 2016

WP_REST_REQUESTRequête du clientContient toutes les constantes magiquesSanitize les donnéesValide les paramètres

Page 12: Word camp paris 2016

WP_REST_SERVERContient les verbes autorisésRécupère une WP_REST_Requestdispatch sur les controllersAttend une WP_REST_ResponseSert la WP_REST_Response

Page 13: Word camp paris 2016

WP_REST_RESPONSEEtend WP_HTTP_ResponseContient les données retournées par les controllersAjoute les "links" d'une ressource

collectiondescription du type de contenutaxonomiesmeta...

Page 14: Word camp paris 2016

source : https://hmn.md/uploads/2016/01/Talking-to-25-of-the-Web.pdf

Page 15: Word camp paris 2016

CLASSES 4.5Base : WP_REST_Controller12 Classes pour les controlleurs des contenus

Page 16: Word camp paris 2016

WP_REST_CONTROLLERClasse abstraite1 méthode à redéfinir : register_routes12 méthodes implémentables

get_itemsget_itemcreate_itemupdate_itemdelete_item....

Page 17: Word camp paris 2016

RÉCUPÉRER UN CONTENU :GET_ITEM

Page 18: Word camp paris 2016

MAIS D'ABORD :GET_ITEM_PERMISSIONS_CHECK

Page 19: Word camp paris 2016

MAIS D'ABORD :CHECK_READ_PERMISSIONS

Page 20: Word camp paris 2016
Page 21: Word camp paris 2016

MÊME PRINCIPE POURcreateupdatedelete

Page 22: Word camp paris 2016

QUELQUES MÉTHODESIMPORTANTES

get_item_schemaprepare_item_for_responseprepare_links

Page 23: Word camp paris 2016

GET_ITEM_SCHEMABasé sur http://json-schema.org/

Décrit l'objet retourné

Propriétés et fonctions

Filtre les valeurs au moment du retour

Page 24: Word camp paris 2016
Page 25: Word camp paris 2016
Page 26: Word camp paris 2016

PREPARE_ITEM_FOR_RESPONSERécupère les données avant retour

Filtre en fonction du contexte (view, edit) et du schema

Ajoute les champs additionnels

Ajoute les 'links'

Retourne une WP_REST_Response

Page 27: Word camp paris 2016
Page 28: Word camp paris 2016
Page 29: Word camp paris 2016

PREPARE_LINKSHypermedia (HAL)

Liaison forte entre les contenus

API auto découvrable

author, collection, enclosure, related, replies, up

Page 30: Word camp paris 2016
Page 31: Word camp paris 2016
Page 32: Word camp paris 2016

?_embed

Page 33: Word camp paris 2016
Page 34: Word camp paris 2016

WP_REST_POSTS_CONTROLLER

Page 35: Word camp paris 2016
Page 36: Word camp paris 2016

ETENDABLE ET COMPATIBLE TOUTTYPE DE CONTENU ET TAXONOMIE

Page 37: Word camp paris 2016

TYPE DE CONTENU

show_in_rest : boolrest_base : stringrest_controller_class : WP_REST_Posts_Controller

Page 38: Word camp paris 2016

TAXONOMIE

show_in_rest : boolrest_base : stringrest_controller_class : WP_REST_Terms_Controller

Page 39: Word camp paris 2016

INITIALISATION DES ROUTEScreate_initial_rest_routes

Types de contenusTaxonomiesChamps personnalisésRévisions

Collection des type de contenusCollection des taxonomiesCollection des statusUtilisateursCommentaires...

Page 40: Word camp paris 2016
Page 41: Word camp paris 2016

EXEMPLE PHP

Page 42: Word camp paris 2016

ADAPTATION : BEA POST VIEWCOUNTER

Compteur de vues par jour, mois, semaine, année

admin-ajax.php vs Rest API

Page 43: Word camp paris 2016

ROUTESNamespace et version

POST monsite.fr/wp­json/bea­post­view­counter/1.0/{post_id}

GET monsite.fr/wp­json/bea­post­view­counter/1.0/{post_id}

Page 44: Word camp paris 2016

BEA_PVC_COUNTER_REST_CONTROLLER

register_routesget_itemcreate_itemcreate_item_permissions_checkprepare_item_for_database

Page 45: Word camp paris 2016
Page 46: Word camp paris 2016

monsite.fr/wp­json/

Page 47: Word camp paris 2016
Page 48: Word camp paris 2016

INTÉGRER DANS MA RÉPONSE POST

Page 49: Word camp paris 2016

FIELD

Page 50: Word camp paris 2016

monsite.fr/wp­json/wp/v2/posts/{post_id}/

Page 51: Word camp paris 2016

EMBED

Page 52: Word camp paris 2016
Page 53: Word camp paris 2016

monsite.fr/wp­json/wp/v2/posts/{post_id}/?_embed  monsite.fr/wp­json/bea­post­view­counter/1.0/{post_id}/

Page 54: Word camp paris 2016

EXEMPLE JAVASCRIPT

Page 55: Word camp paris 2016

CRÉATION : EDITEUR FRONT OFFICEModifier le titre et l'image depuis le front office

Page 56: Word camp paris 2016

PHP

56 lignes, 1 classe

Page 57: Word camp paris 2016
Page 58: Word camp paris 2016

JAVASCRIPT

111 lignes bien indentéeswp-api.js + jQuery + Backbone + Underscore

Page 59: Word camp paris 2016

RÉCUPÉRER LES DONNÉESmonsite.fr/wp­json/wp/v2/posts/{post_id}/

Page 60: Word camp paris 2016
Page 61: Word camp paris 2016

CLICK

Page 62: Word camp paris 2016

FOCUSOUT

Page 63: Word camp paris 2016

CONCLUSIONEtendableAuthentificationsWP CLIPossibilités infinies

E-CommerceMultilinguePosts to postsAdvanced custom fieldsObjet connectéDashboard dynamique

Page 64: Word camp paris 2016

DES QUESTIONS ?