Download - Word camp paris 2016
WP API : LA REVIEW TECHNIQUEWORDCAMP PARIS 2016
QUI SUIS-JE ?Développeur PHP et JavaScriptDéveloppeur avec WordPress depuis 6 ansDirecteur technique à @be_api
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
RÉCUPÉRER LES DERNIERSARTICLES
GET monsite.fr/wpjson/wp/v2/posts
RÉCUPÉRER LE CONTENU D'UNARTICLE
GET monsite.fr/wpjson/wp/v2/posts/15/
METTRE À JOUR UN CONTENUPOST|PUT|PATCH monsite.fr/wpjson/wp/v2/posts/15/
4.4 -> 4.5
LA WP APILe projet
ou pas...
3 CLASSES 4.4WP_REST_ServerWP_REST_RequestWP_REST_Response
WP_REST_REQUESTRequête du clientContient toutes les constantes magiquesSanitize les donnéesValide les paramètres
WP_REST_SERVERContient les verbes autorisésRécupère une WP_REST_Requestdispatch sur les controllersAttend une WP_REST_ResponseSert la WP_REST_Response
WP_REST_RESPONSEEtend WP_HTTP_ResponseContient les données retournées par les controllersAjoute les "links" d'une ressource
collectiondescription du type de contenutaxonomiesmeta...
source : https://hmn.md/uploads/2016/01/Talking-to-25-of-the-Web.pdf
CLASSES 4.5Base : WP_REST_Controller12 Classes pour les controlleurs des contenus
WP_REST_CONTROLLERClasse abstraite1 méthode à redéfinir : register_routes12 méthodes implémentables
get_itemsget_itemcreate_itemupdate_itemdelete_item....
RÉCUPÉRER UN CONTENU :GET_ITEM
MAIS D'ABORD :GET_ITEM_PERMISSIONS_CHECK
MAIS D'ABORD :CHECK_READ_PERMISSIONS
MÊME PRINCIPE POURcreateupdatedelete
QUELQUES MÉTHODESIMPORTANTES
get_item_schemaprepare_item_for_responseprepare_links
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
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
PREPARE_LINKSHypermedia (HAL)
Liaison forte entre les contenus
API auto découvrable
author, collection, enclosure, related, replies, up
?_embed
WP_REST_POSTS_CONTROLLER
ETENDABLE ET COMPATIBLE TOUTTYPE DE CONTENU ET TAXONOMIE
TYPE DE CONTENU
show_in_rest : boolrest_base : stringrest_controller_class : WP_REST_Posts_Controller
TAXONOMIE
show_in_rest : boolrest_base : stringrest_controller_class : WP_REST_Terms_Controller
INITIALISATION DES ROUTEScreate_initial_rest_routes
Types de contenusTaxonomiesChamps personnalisésRévisions
Collection des type de contenusCollection des taxonomiesCollection des statusUtilisateursCommentaires...
EXEMPLE PHP
ADAPTATION : BEA POST VIEWCOUNTER
Compteur de vues par jour, mois, semaine, année
admin-ajax.php vs Rest API
ROUTESNamespace et version
POST monsite.fr/wpjson/beapostviewcounter/1.0/{post_id}
GET monsite.fr/wpjson/beapostviewcounter/1.0/{post_id}
BEA_PVC_COUNTER_REST_CONTROLLER
register_routesget_itemcreate_itemcreate_item_permissions_checkprepare_item_for_database
monsite.fr/wpjson/
INTÉGRER DANS MA RÉPONSE POST
FIELD
monsite.fr/wpjson/wp/v2/posts/{post_id}/
EMBED
monsite.fr/wpjson/wp/v2/posts/{post_id}/?_embed monsite.fr/wpjson/beapostviewcounter/1.0/{post_id}/
EXEMPLE JAVASCRIPT
CRÉATION : EDITEUR FRONT OFFICEModifier le titre et l'image depuis le front office
PHP
56 lignes, 1 classe
JAVASCRIPT
111 lignes bien indentéeswp-api.js + jQuery + Backbone + Underscore
RÉCUPÉRER LES DONNÉESmonsite.fr/wpjson/wp/v2/posts/{post_id}/
CLICK
FOCUSOUT
CONCLUSIONEtendableAuthentificationsWP CLIPossibilités infinies
E-CommerceMultilinguePosts to postsAdvanced custom fieldsObjet connectéDashboard dynamique
DES QUESTIONS ?