word camp paris 2016

64
WP API : LA REVIEW TECHNIQUE WORDCAMP PARIS 2016

Upload: nicolas-juen

Post on 21-Jan-2017

1.077 views

Category:

Technology


0 download

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 ?