Word camp paris 2016

1 204 vues

Publié le

La WP REST API est là ! Mais quelles sont les implications techniques ?
Nous allons faire le tour de la partie technique qui se cache derrière /wp-json/ mais aussi les possibilités en Javascript pour rendre son site plus dynamique et rapide !
Découvrons ensemble les mutiples facettes et possibilités de la WP API qui attend le/la dev en embuscade.

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 204
Sur SlideShare
0
Issues des intégrations
0
Intégrations
46
Actions
Partages
0
Téléchargements
6
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Word camp paris 2016

  1. 1. WP API : LA REVIEW TECHNIQUE WORDCAMP PARIS 2016
  2. 2. QUI SUIS-JE ? Développeur PHP et JavaScript Développeur avec WordPress depuis 6 ans Directeur technique à @be_api
  3. 3. REST Un ensemble de bonne pratiques pour la construction d'une API Chaque contenu est défini comme une ressource Utilisation des verbes HTTP Des "routes" claires et formatées
  4. 4. RÉCUPÉRER LES DERNIERS ARTICLES GET monsite.fr/wp­json/wp/v2/posts
  5. 5. RÉCUPÉRER LE CONTENU D'UN ARTICLE GET monsite.fr/wp­json/wp/v2/posts/15/
  6. 6. METTRE À JOUR UN CONTENU POST|PUT|PATCH monsite.fr/wp­json/wp/v2/posts/15/
  7. 7. 4.4 -> 4.5 LA WP API Le projet ou pas...
  8. 8. 3 CLASSES 4.4 WP_REST_Server WP_REST_Request WP_REST_Response
  9. 9. WP_REST_REQUEST Requête du client Contient toutes les constantes magiques Sanitize les données Valide les paramètres
  10. 10. WP_REST_SERVER Contient les verbes autorisés Récupère une WP_REST_Request dispatch sur les controllers Attend une WP_REST_Response Sert la WP_REST_Response
  11. 11. WP_REST_RESPONSE Etend WP_HTTP_Response Contient les données retournées par les controllers Ajoute les "links" d'une ressource collection description du type de contenu taxonomies meta ...
  12. 12. source : https://hmn.md/uploads/2016/01/Talking-to-25-of-the-Web.pdf
  13. 13. CLASSES 4.5 Base : WP_REST_Controller 12 Classes pour les controlleurs des contenus
  14. 14. WP_REST_CONTROLLER Classe abstraite 1 méthode à redéfinir : register_routes 12 méthodes implémentables get_items get_item create_item update_item delete_item ....
  15. 15. RÉCUPÉRER UN CONTENU : GET_ITEM
  16. 16. MAIS D'ABORD : GET_ITEM_PERMISSIONS_CHECK
  17. 17. MAIS D'ABORD : CHECK_READ_PERMISSIONS
  18. 18. MÊME PRINCIPE POUR create update delete
  19. 19. QUELQUES MÉTHODES IMPORTANTES get_item_schema prepare_item_for_response prepare_links
  20. 20. GET_ITEM_SCHEMA Basé sur http://json-schema.org/ Décrit l'objet retourné Propriétés et fonctions Filtre les valeurs au moment du retour
  21. 21. PREPARE_ITEM_FOR_RESPONSE Ré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
  22. 22. PREPARE_LINKS Hypermedia (HAL) Liaison forte entre les contenus API auto découvrable author, collection, enclosure, related, replies, up
  23. 23. ?_embed
  24. 24. WP_REST_POSTS_CONTROLLER
  25. 25. ETENDABLE ET COMPATIBLE TOUT TYPE DE CONTENU ET TAXONOMIE
  26. 26. TYPE DE CONTENU show_in_rest : bool rest_base : string rest_controller_class : WP_REST_Posts_Controller
  27. 27. TAXONOMIE show_in_rest : bool rest_base : string rest_controller_class : WP_REST_Terms_Controller
  28. 28. INITIALISATION DES ROUTES create_initial_rest_routes Types de contenus Taxonomies Champs personnalisés Révisions Collection des type de contenus Collection des taxonomies Collection des status Utilisateurs Commentaires ...
  29. 29. EXEMPLE PHP
  30. 30. ADAPTATION : BEA POST VIEW COUNTER Compteur de vues par jour, mois, semaine, année admin-ajax.php vs Rest API
  31. 31. ROUTES Namespace 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}
  32. 32. BEA_PVC_COUNTER_REST_CONTRO LLER register_routes get_item create_item create_item_permissions_check prepare_item_for_database
  33. 33. monsite.fr/wp­json/
  34. 34. INTÉGRER DANS MA RÉPONSE POST
  35. 35. FIELD
  36. 36. monsite.fr/wp­json/wp/v2/posts/{post_id}/
  37. 37. EMBED
  38. 38. monsite.fr/wp­json/wp/v2/posts/{post_id}/?_embed   monsite.fr/wp­json/bea­post­view­counter/1.0/{post_id}/
  39. 39. EXEMPLE JAVASCRIPT
  40. 40. CRÉATION : EDITEUR FRONT OFFICE Modifier le titre et l'image depuis le front office
  41. 41. PHP 56 lignes, 1 classe
  42. 42. JAVASCRIPT 111 lignes bien indentées wp-api.js + jQuery + Backbone + Underscore
  43. 43. RÉCUPÉRER LES DONNÉES monsite.fr/wp­json/wp/v2/posts/{post_id}/
  44. 44. CLICK
  45. 45. FOCUSOUT
  46. 46. CONCLUSION Etendable Authentifications WP CLI Possibilités infinies E-Commerce Multilingue Posts to posts Advanced custom fields Objet connecté Dashboard dynamique
  47. 47. DES QUESTIONS ?

×