OUVRIR VOS PLUGINS 
AUX AUTRES DÉVELOPPEURS 
Petite leçon de modularité 
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
Rémi 
CORSON 
Ninjineer @ WooThemes 
remicorson.com 
@remicorson 
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
DON'T SPEAK FRENCH? 
HTTP://GOO.GL/W2G9RX 
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
POURQUOI ? 
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
"De la même manière que nous modifions 
WordPress avec nos plugins, nous 
pouvons altérer nos plugins par d'autres 
plugin...
"L'ouverture de votre code est la meilleure 
façon de faire croître votre produit 
rapidement; Plus de dévs = plus de 
con...
"Il est important de créer des 
opportunités d'affaires autour de votre 
produit afin d'assurer sa durabilité et 
sa renta...
"Permettre de modifier ou d'ajouter des 
fonctionnalités à votre plugin étend 
naturellement sa base" 
— Magnus Jepson, co...
WOOCOMMERCE SUBSCRIPTIONS 
EST LE PRODUIT QUI SE VEND LE PLUS 
SUR WOOTHEMES.COM 
© Rémi Corson | WPtech Nantes | 29 Novem...
LA SOCIÉTÉ Skyverge EMPLOIE 
6 PERSONNES À TEMPS PLEIN 
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
DÉFINITION 
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
UN PLUGIN MODULABLE EST UN PLUGIN POUVANT ÊTRE 
MODIFIÉ & ETENDU 
SANS QUE SON CODE NE SOIT MODIFIÉ 
© Rémi Corson | WPtec...
MODULABLE 
= 
FLEXIBLE, ADAPTABLE, AJUSTABLE 
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
MODULABLE 
!= 
INADAPTABLE, REBELLE, RÉCALCITRANT 
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
EXEMPLES 
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
UN PLUGIN DE ECOMMERCE 
PERMETTANT D'AJOUTER DES MOYENS DE PAIEMENT 
OU DES OPTIONS DE LIVRAISON (FEDEX, UPS...) 
© Rémi C...
UN PLUGIN DE FORUMS 
PERMETTANT DE RESTREINDRE LES CONVERSATIONS 
SELON LE RÔLE DES UTILISATEURS 
© Rémi Corson | WPtech N...
UN PLUGIN TYPE SLIDER 
PERMETTANT DE CUSTOMISER 
LE VISUEL DES SLIDES 
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
QUE PEUT-ON 
MODIFIER ? © Rémi Corson | WPtech Nantes | 29 Novembre 2014
TEXTES 
IMAGES 
DONNÉES 
VISUELS 
FONCTIONS 
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
COMMENT ? 
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
AVEC 
DES 
HOOKS © Rémi Corson | WPtech Nantes | 29 Novembre 2014
ADD_ACTION() 
DO_ACTION() 
ADD_FILTER() 
APPLY_FILTERS() 
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
LES ACTIONS SONT DÉCLENCHÉES PAR DES ÉVÉNEMENTS SPÉCIFIQUES: 
- PUBLICATION D'UN ARTICLE 
- ACTIVATION D'UN THÈME 
- AFFIC...
LES FILTRES SONT DES FONCTIONS 
PERMETTANT DE MANIPULER LES DONNÉES 
LANCÉES ENTRE LA BASE 
ET LE NAVIGATEUR ET 
© Rémi Co...
CODE © Rémi Corson | WPtech Nantes | 29 Novembre 2014
function mon_shortcode() { 
ob_start(); ?> 
<div id="conteneur"> 
<p>Mon message</p> 
</div> 
<?php 
return get_ob_clean()...
CA FONCTIONNE 
MAIS... © Rémi Corson | WPtech Nantes | 29 Novembre 2014
function mon_shortcode() { 
ob_start(); ?> 
<div id="conteneur"> 
<p>Mon message</p> 
<?php do_action( 'sous_message' ); ?...
CE QUI PERMET... 
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
function mon_shortcode() { 
ob_start(); ?> 
<div id="conteneur"> 
<p>Mon message</p> 
<?php do_action( 'sous_message' ); ?...
EN DÉTAIL... 
function ajoute_contenu() { 
echo '<p>2eme message sous mon 1er message</p>'; 
} 
add_action( 'sous_message'...
LE RÉSULTAT 
<div id="conteneur"> 
<p>Mon message</p> 
<p>2eme message sous mon 1er message</p> 
</div> 
© Rémi Corson | W...
AUTRE MÉTHODE 
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
function mon_shortcode() { 
$output = '<div id="conteneur">'; 
$output .= '<p>Mon message</p>'; 
$output .= '</div>'; 
ret...
function mon_shortcode() { 
$output = '<div id="conteneur">'; 
$output .= '<p>Mon message</p>'; 
$output .= '</div>'; 
ret...
EN DÉTAIL... 
function embed_conteneur( $output ) { 
return '<div id="conteneur_principal">' . $output . '</div>'; 
} 
app...
LE RÉSULTAT 
<div id="conteneur_principal"> 
<div id="conteneur"> 
<p>Mon message</p> 
</div> 
</div> 
© Rémi Corson | WPt...
COMBINAISON 
DES 2 MÉTHODES 
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
function mon_shortcode() { 
ob_start(); ?> 
<div id="conteneur"> 
<p>Mon message</p> 
<?php do_action( 'sous_message' ); ?...
MODÈLES 
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
UTILISER DES MODÈLES 
C'EST CHARGER SES PROPRES FICHIERS 
ET NE PAS UTILISER LES MODÈLES PAR DÉFAUT 
© Rémi Corson | WPtec...
add_filter( 'template_include', 'rc_template_chooser'); 
function rc_template_chooser( $template ) { 
// Récupère l'ID du ...
function rc_get_template_hierarchy( $template ) { 
// Récupère le slug du modèle 
$template_slug = rtrim( $template, '.php...
111 MODÈLES 
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
API © Rémi Corson | WPtech Nantes | 29 Novembre 2014
DÉFINITION 
UNE API EST UN ENSEMBLE NORMALISÉ DE CLASSES, 
DE MÉTHODES OU DE FONCTIONS SERVANT DE FAÇADE 
PAR LAQUELLE UN ...
WOOCOMMERCE REST API 
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
REST (REPRESENTATIONAL STATE TRANSFER) 
EST UN STYLE D’ARCHITECTURE 
POUR LES SYSTÈMES HYPERMÉDIA DISTRIBUÉS. 
REST N’EST ...
LA WC REST API PERMET CRÉER DES DONNÉES, 
DE LIRE, DE METTRE À JOUR, 
ET SUPPRIMER AU FORMAT JSON 
© Rémi Corson | WPtech ...
EXEMPLES: http://site.fr/wc-api/v2/products 
http://site.fr/wc-api/v2/orders 
http://site.fr/wc-api/v2/orders?status=compl...
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
EN SAVOIR + 
http://docs.woothemes.com/document/woocommerce-rest-api/ 
http://gerhardpotgieter.com/2014/02/10/woocommerce-...
HOOKS 
MODÈLES 
APIS © Rémi Corson | WPtech Nantes | 29 Novembre 2014
GITHUB 
TRELLO 
GITTER 
GISTS 
TRANSIFEX 
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
MERCI ! © Rémi Corson | WPtech Nantes | 29 Novembre 2014
-25% SUR WOOTHEMES.COM 
WOO-WPTECH 
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
Prochain SlideShare
Chargement dans…5
×

Ouvrir vos plugins aux autres développeurs - WPTech Nantes

4 333 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 333
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2 712
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

×