Ouvrir vos plugins aux autres développeurs - WPTech Nantes

4 313 vues

Publié le

Apprenez à ouvrir votre code aux développeurs: pourquoi ? Comment ? Crée des plugins modulaires pour assurer la pérennité de vos produits.

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

Aucun téléchargement
Vues
Nombre de vues
4 313
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2 713
Actions
Partages
0
Téléchargements
24
Commentaires
0
J’aime
3
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Ouvrir vos plugins aux autres développeurs - WPTech Nantes

  1. 1. OUVRIR VOS PLUGINS AUX AUTRES DÉVELOPPEURS Petite leçon de modularité © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  2. 2. Rémi CORSON Ninjineer @ WooThemes remicorson.com @remicorson © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  3. 3. DON'T SPEAK FRENCH? HTTP://GOO.GL/W2G9RX © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  4. 4. POURQUOI ? © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  5. 5. "De la même manière que nous modifions WordPress avec nos plugins, nous pouvons altérer nos plugins par d'autres plugins" — Pippin Williamson, Lead Developer Easy Digital Downloads © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  6. 6. "L'ouverture de votre code est la meilleure façon de faire croître votre produit rapidement; Plus de dévs = plus de contributions" — Mike Jolley, Lead Developer WooCommerce © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  7. 7. "Il est important de créer des opportunités d'affaires autour de votre produit afin d'assurer sa durabilité et sa rentabilité" — Mark Forrester, co-fondateur de WooThemes © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  8. 8. "Permettre de modifier ou d'ajouter des fonctionnalités à votre plugin étend naturellement sa base" — Magnus Jepson, co-fondateur de WooThemes © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  9. 9. WOOCOMMERCE SUBSCRIPTIONS EST LE PRODUIT QUI SE VEND LE PLUS SUR WOOTHEMES.COM © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  10. 10. LA SOCIÉTÉ Skyverge EMPLOIE 6 PERSONNES À TEMPS PLEIN © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  11. 11. DÉFINITION © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  12. 12. UN PLUGIN MODULABLE EST UN PLUGIN POUVANT ÊTRE MODIFIÉ & ETENDU SANS QUE SON CODE NE SOIT MODIFIÉ © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  13. 13. MODULABLE = FLEXIBLE, ADAPTABLE, AJUSTABLE © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  14. 14. MODULABLE != INADAPTABLE, REBELLE, RÉCALCITRANT © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  15. 15. EXEMPLES © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  16. 16. UN PLUGIN DE ECOMMERCE PERMETTANT D'AJOUTER DES MOYENS DE PAIEMENT OU DES OPTIONS DE LIVRAISON (FEDEX, UPS...) © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  17. 17. UN PLUGIN DE FORUMS PERMETTANT DE RESTREINDRE LES CONVERSATIONS SELON LE RÔLE DES UTILISATEURS © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  18. 18. UN PLUGIN TYPE SLIDER PERMETTANT DE CUSTOMISER LE VISUEL DES SLIDES © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  19. 19. QUE PEUT-ON MODIFIER ? © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  20. 20. TEXTES IMAGES DONNÉES VISUELS FONCTIONS © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  21. 21. COMMENT ? © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  22. 22. AVEC DES HOOKS © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  23. 23. ADD_ACTION() DO_ACTION() ADD_FILTER() APPLY_FILTERS() © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  24. 24. LES ACTIONS SONT DÉCLENCHÉES PAR DES ÉVÉNEMENTS SPÉCIFIQUES: - PUBLICATION D'UN ARTICLE - ACTIVATION D'UN THÈME - AFFICHAGE D'UNE PAGE DE L'ADMIN © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  25. 25. LES FILTRES SONT DES FONCTIONS PERMETTANT DE MANIPULER LES DONNÉES LANCÉES ENTRE LA BASE ET LE NAVIGATEUR ET © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  26. 26. CODE © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  27. 27. function mon_shortcode() { ob_start(); ?> <div id="conteneur"> <p>Mon message</p> </div> <?php return get_ob_clean(); } add_shortcode( 'affiche_message', 'mon_shortcode' ); © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  28. 28. CA FONCTIONNE MAIS... © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  29. 29. function mon_shortcode() { ob_start(); ?> <div id="conteneur"> <p>Mon message</p> <?php do_action( 'sous_message' ); ?> </div> <?php return get_ob_clean(); } add_shortcode( 'affiche_message', 'mon_shortcode' ); © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  30. 30. CE QUI PERMET... © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  31. 31. function mon_shortcode() { ob_start(); ?> <div id="conteneur"> <p>Mon message</p> <?php do_action( 'sous_message' ); ?> </div> <?php return get_ob_clean(); } add_shortcode( 'affiche_message', 'mon_shortcode' ); function ajoute_contenu() { echo '<p>2eme message sous mon 1er message</p>'; } add_action( 'sous_message', 'ajoute_contenu' ); © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  32. 32. EN DÉTAIL... function ajoute_contenu() { echo '<p>2eme message sous mon 1er message</p>'; } add_action( 'sous_message', 'ajoute_contenu' ); © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  33. 33. LE RÉSULTAT <div id="conteneur"> <p>Mon message</p> <p>2eme message sous mon 1er message</p> </div> © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  34. 34. AUTRE MÉTHODE © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  35. 35. function mon_shortcode() { $output = '<div id="conteneur">'; $output .= '<p>Mon message</p>'; $output .= '</div>'; return apply_filters( 'mon_message', $output ); } add_shortcode( 'affiche_message', 'mon_shortcode' ); © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  36. 36. function mon_shortcode() { $output = '<div id="conteneur">'; $output .= '<p>Mon message</p>'; $output .= '</div>'; return apply_filters( 'mon_message', $output ); } add_shortcode( 'affiche_message', 'mon_shortcode' ); function embed_conteneur( $output ) { return '<div id="conteneur_principal">' . $output . '</div>'; } apply_filters( 'mon_message', 'embed_conteneur' ); © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  37. 37. EN DÉTAIL... function embed_conteneur( $output ) { return '<div id="conteneur_principal">' . $output . '</div>'; } apply_filters( 'mon_message', 'embed_conteneur' ); © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  38. 38. LE RÉSULTAT <div id="conteneur_principal"> <div id="conteneur"> <p>Mon message</p> </div> </div> © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  39. 39. COMBINAISON DES 2 MÉTHODES © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  40. 40. function mon_shortcode() { ob_start(); ?> <div id="conteneur"> <p>Mon message</p> <?php do_action( 'sous_message' ); ?> </div> <?php $output = get_ob_clean(); return apply_filters( 'mon_message', $output ); } add_shortcode( 'affiche_message', 'mon_shortcode' ); © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  41. 41. MODÈLES © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  42. 42. UTILISER DES MODÈLES C'EST CHARGER SES PROPRES FICHIERS ET NE PAS UTILISER LES MODÈLES PAR DÉFAUT © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  43. 43. add_filter( 'template_include', 'rc_template_chooser'); function rc_template_chooser( $template ) { // Récupère l'ID du post $post_id = get_the_ID(); // Charger le modèle par défaut pour les autres CPTs if ( get_post_type( $post_id ) != 'testimonial' ) { return $template; } // Utiliser notre propre modèle if ( is_single() ) { return rc_get_template_hierarchy( 'single' ); } } © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  44. 44. function rc_get_template_hierarchy( $template ) { // Récupère le slug du modèle $template_slug = rtrim( $template, '.php' ); $template = $template_slug . '.php'; // Existe t-il un modèle dans le dossier du thème ? (single.php) if ( $theme_file = locate_template( array( 'plugin_template/' . $template ) ) ) { $file = $theme_file; } else { $file = RC_BASE_DIR . '/includes/templates/' . $template; } return apply_filters( 'rc_template_' . $template, $file ); } CODE COMPLET + TUTORIAL © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  45. 45. 111 MODÈLES © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  46. 46. API © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  47. 47. DÉFINITION UNE API EST UN ENSEMBLE NORMALISÉ DE CLASSES, DE MÉTHODES OU DE FONCTIONS SERVANT DE FAÇADE PAR LAQUELLE UN LOGICIEL OFFRE DES SERVICES À D'AUTRES LOGICIELS © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  48. 48. WOOCOMMERCE REST API © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  49. 49. REST (REPRESENTATIONAL STATE TRANSFER) EST UN STYLE D’ARCHITECTURE POUR LES SYSTÈMES HYPERMÉDIA DISTRIBUÉS. REST N’EST PAS UN PROTOCOLE (TEL QUE HTTP) © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  50. 50. LA WC REST API PERMET CRÉER DES DONNÉES, DE LIRE, DE METTRE À JOUR, ET SUPPRIMER AU FORMAT JSON © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  51. 51. EXEMPLES: http://site.fr/wc-api/v2/products http://site.fr/wc-api/v2/orders http://site.fr/wc-api/v2/orders?status=completed http://site.fr/wc-api/v2/orders?filter[created_at_min]=2013-11-01 © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  52. 52. © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  53. 53. EN SAVOIR + http://docs.woothemes.com/document/woocommerce-rest-api/ http://gerhardpotgieter.com/2014/02/10/woocommerce-rest-api-client- library/ http://docs.woocommercev2.apiary.io/introduction/authentication/ over-http © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  54. 54. HOOKS MODÈLES APIS © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  55. 55. GITHUB TRELLO GITTER GISTS TRANSIFEX © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  56. 56. MERCI ! © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  57. 57. -25% SUR WOOTHEMES.COM WOO-WPTECH © Rémi Corson | WPtech Nantes | 29 Novembre 2014

×