Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Ouvrir vos plugins aux autres développeurs - WPTech Nantes

6,460 views

Published on

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

Published in: Software
  • Be the first to comment

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

×