SlideShare une entreprise Scribd logo
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 
plugins" 
— Pippin Williamson, Lead Developer Easy Digital Downloads 
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
"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
"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
"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
WOOCOMMERCE SUBSCRIPTIONS 
EST LE PRODUIT QUI SE VEND LE PLUS 
SUR WOOTHEMES.COM 
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
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 | WPtech Nantes | 29 Novembre 2014
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 Corson | WPtech Nantes | 29 Novembre 2014
UN PLUGIN DE FORUMS 
PERMETTANT DE RESTREINDRE LES CONVERSATIONS 
SELON LE RÔLE DES UTILISATEURS 
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
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 
- AFFICHAGE D'UNE PAGE DE L'ADMIN 
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
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
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(); 
} 
add_shortcode( 'affiche_message', 'mon_shortcode' ); 
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
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' ); ?> 
</div> 
<?php 
return get_ob_clean(); 
} 
add_shortcode( 'affiche_message', 'mon_shortcode' ); 
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
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' ); ?> 
</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
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
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
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>'; 
return apply_filters( 'mon_message', $output ); 
} 
add_shortcode( 'affiche_message', 'mon_shortcode' ); 
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
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
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
LE RÉSULTAT 
<div id="conteneur_principal"> 
<div id="conteneur"> 
<p>Mon message</p> 
</div> 
</div> 
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
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' ); ?> 
</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
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 | WPtech Nantes | 29 Novembre 2014
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
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
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 LOGICIEL OFFRE DES SERVICES 
À D'AUTRES LOGICIELS 
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
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 PAS UN PROTOCOLE (TEL QUE HTTP) 
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
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
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
© 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-rest-api-client- 
library/ 
http://docs.woocommercev2.apiary.io/introduction/authentication/ 
over-http 
© Rémi Corson | WPtech Nantes | 29 Novembre 2014
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

Contenu connexe

Tendances

Alter way-wordcamp-paris-2014
Alter way-wordcamp-paris-2014Alter way-wordcamp-paris-2014
Alter way-wordcamp-paris-2014
ALTER WAY
 
Sécuriser un site Wordpress
Sécuriser un site WordpressSécuriser un site Wordpress
Sécuriser un site Wordpress
bestyuna
 
Création de themes WordPress
Création de themes WordPressCréation de themes WordPress
Création de themes WordPress
Chi Nacim
 

Tendances (20)

Wordpress et la sécurité des plugins
Wordpress et la sécurité des pluginsWordpress et la sécurité des plugins
Wordpress et la sécurité des plugins
 
Comment se charge WordPress ? Le loading du core.
Comment se charge WordPress ? Le loading du core.Comment se charge WordPress ? Le loading du core.
Comment se charge WordPress ? Le loading du core.
 
Enrichir vos contenus Wordpress avec les API - WPTech 2015
Enrichir vos contenus Wordpress avec les API - WPTech 2015Enrichir vos contenus Wordpress avec les API - WPTech 2015
Enrichir vos contenus Wordpress avec les API - WPTech 2015
 
L’envers du décor d’un site WooCommerce | WP Tech Nantes
L’envers du décord’un site WooCommerce | WP Tech NantesL’envers du décord’un site WooCommerce | WP Tech Nantes
L’envers du décor d’un site WooCommerce | WP Tech Nantes
 
Comment transformer WordPress en portail de formation
Comment transformer WordPress en portail de formationComment transformer WordPress en portail de formation
Comment transformer WordPress en portail de formation
 
Alter way-wordcamp-paris-2014
Alter way-wordcamp-paris-2014Alter way-wordcamp-paris-2014
Alter way-wordcamp-paris-2014
 
Industrialiser votre maintenance sous WordPress
Industrialiser votre maintenance sous WordPressIndustrialiser votre maintenance sous WordPress
Industrialiser votre maintenance sous WordPress
 
Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...
Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...
Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...
 
Wordpress : Attaque, Audit et Protection | Hackfest 2015
Wordpress : Attaque, Audit et Protection | Hackfest 2015Wordpress : Attaque, Audit et Protection | Hackfest 2015
Wordpress : Attaque, Audit et Protection | Hackfest 2015
 
Création d'espaces privés sous WordPress
Création d'espaces privés sous WordPressCréation d'espaces privés sous WordPress
Création d'espaces privés sous WordPress
 
Combien coûte un site WordPress ? - Wordcamp Paris 2014
Combien coûte un site WordPress ? - Wordcamp Paris 2014Combien coûte un site WordPress ? - Wordcamp Paris 2014
Combien coûte un site WordPress ? - Wordcamp Paris 2014
 
Un site de collectivité sur WordPress ? Méthodes et retours d'XP
Un site de collectivité sur WordPress ? Méthodes et retours d'XPUn site de collectivité sur WordPress ? Méthodes et retours d'XP
Un site de collectivité sur WordPress ? Méthodes et retours d'XP
 
Sécuriser un site Wordpress
Sécuriser un site WordpressSécuriser un site Wordpress
Sécuriser un site Wordpress
 
Migration de données… Destination WordPress !
Migration de données… Destination WordPress !Migration de données… Destination WordPress !
Migration de données… Destination WordPress !
 
Création de themes WordPress
Création de themes WordPressCréation de themes WordPress
Création de themes WordPress
 
ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJS
 
Alphorm.com Formation Windev Mobile 20 iOS
Alphorm.com Formation Windev Mobile 20 iOSAlphorm.com Formation Windev Mobile 20 iOS
Alphorm.com Formation Windev Mobile 20 iOS
 
Alphorm.com Formation Windev Mobile 19, Android
Alphorm.com Formation Windev Mobile 19, AndroidAlphorm.com Formation Windev Mobile 19, Android
Alphorm.com Formation Windev Mobile 19, Android
 
Bonnes pratiques intégration robuste
Bonnes pratiques intégration robusteBonnes pratiques intégration robuste
Bonnes pratiques intégration robuste
 
Wordcamp paris-2016 : Comment fonctionnent le projet et la communauté open so...
Wordcamp paris-2016 : Comment fonctionnent le projet et la communauté open so...Wordcamp paris-2016 : Comment fonctionnent le projet et la communauté open so...
Wordcamp paris-2016 : Comment fonctionnent le projet et la communauté open so...
 

Similaire à Ouvrir vos plugins aux autres développeurs - WPTech Nantes

Déploiement d’applications
Déploiement d’applicationsDéploiement d’applications
Déploiement d’applications
Mohammed Jaafar
 
De la pensée projet à la pensée produit
De la pensée projet à la pensée produitDe la pensée projet à la pensée produit
De la pensée projet à la pensée produit
OCTO Technology Suisse
 

Similaire à Ouvrir vos plugins aux autres développeurs - WPTech Nantes (20)

Les 10 buzzwords du hipster agile
Les 10 buzzwords du hipster agileLes 10 buzzwords du hipster agile
Les 10 buzzwords du hipster agile
 
Les 10 buzzwords du hipster agile - Session Agile France
Les 10 buzzwords du hipster agile - Session Agile FranceLes 10 buzzwords du hipster agile - Session Agile France
Les 10 buzzwords du hipster agile - Session Agile France
 
Amener vos applications Dockerisées jusqu’en production avec XebiaLabs
Amener vos applications Dockerisées jusqu’en production avec XebiaLabs �Amener vos applications Dockerisées jusqu’en production avec XebiaLabs �
Amener vos applications Dockerisées jusqu’en production avec XebiaLabs
 
MVC / Frameworks PHP
MVC / Frameworks PHPMVC / Frameworks PHP
MVC / Frameworks PHP
 
#1 cloud-infra-talk- l ops-du-devops
#1 cloud-infra-talk- l ops-du-devops#1 cloud-infra-talk- l ops-du-devops
#1 cloud-infra-talk- l ops-du-devops
 
20151119 Tirer le meilleur parti du Cloud pour ses développements
20151119 Tirer le meilleur parti du Cloud pour ses développements20151119 Tirer le meilleur parti du Cloud pour ses développements
20151119 Tirer le meilleur parti du Cloud pour ses développements
 
Cwin16 - Paris - dev ops
Cwin16 - Paris - dev opsCwin16 - Paris - dev ops
Cwin16 - Paris - dev ops
 
Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)
 
Integrons en mode continu
Integrons en mode continuIntegrons en mode continu
Integrons en mode continu
 
Panoplie d'outils (presque) gratuits pour le veilleur - Béatrice Foenix-Riou ...
Panoplie d'outils (presque) gratuits pour le veilleur - Béatrice Foenix-Riou ...Panoplie d'outils (presque) gratuits pour le veilleur - Béatrice Foenix-Riou ...
Panoplie d'outils (presque) gratuits pour le veilleur - Béatrice Foenix-Riou ...
 
[GAB2016] Azure et les Microservices - Jean-Luc Boucho
[GAB2016] Azure et les Microservices - Jean-Luc Boucho[GAB2016] Azure et les Microservices - Jean-Luc Boucho
[GAB2016] Azure et les Microservices - Jean-Luc Boucho
 
J.L. Boucho, J.Corioland - Azure et les Microservices - Global Azure Bootcamp...
J.L. Boucho, J.Corioland - Azure et les Microservices - Global Azure Bootcamp...J.L. Boucho, J.Corioland - Azure et les Microservices - Global Azure Bootcamp...
J.L. Boucho, J.Corioland - Azure et les Microservices - Global Azure Bootcamp...
 
SQLI - Club des DSI - Mobilité
SQLI - Club des DSI - MobilitéSQLI - Club des DSI - Mobilité
SQLI - Club des DSI - Mobilité
 
From Idea to the Cloud, a JHipster Story
From Idea to the Cloud, a JHipster StoryFrom Idea to the Cloud, a JHipster Story
From Idea to the Cloud, a JHipster Story
 
ASP.NET MVC 6
ASP.NET MVC 6ASP.NET MVC 6
ASP.NET MVC 6
 
Déploiement d’applications
Déploiement d’applicationsDéploiement d’applications
Déploiement d’applications
 
De la pensée projet à la pensée produit
De la pensée projet à la pensée produitDe la pensée projet à la pensée produit
De la pensée projet à la pensée produit
 
Gab17 lyon-rex build dev ops sur une infra iaas-paas multisite-by-matthieupetite
Gab17 lyon-rex build dev ops sur une infra iaas-paas multisite-by-matthieupetiteGab17 lyon-rex build dev ops sur une infra iaas-paas multisite-by-matthieupetite
Gab17 lyon-rex build dev ops sur une infra iaas-paas multisite-by-matthieupetite
 
Gestion de formulaires en PHP
Gestion de formulaires en PHPGestion de formulaires en PHP
Gestion de formulaires en PHP
 
devops REX 2018 - Faire du DevOps dans une relation contractuelle et commerci...
devops REX 2018 - Faire du DevOps dans une relation contractuelle et commerci...devops REX 2018 - Faire du DevOps dans une relation contractuelle et commerci...
devops REX 2018 - Faire du DevOps dans une relation contractuelle et commerci...
 

Plus de corsonr

Plus de corsonr (8)

Un bloc WooTenberg pour un coworking associatif
Un bloc WooTenberg pour un coworking associatifUn bloc WooTenberg pour un coworking associatif
Un bloc WooTenberg pour un coworking associatif
 
L'impact écologique d'Internet
L'impact écologique d'InternetL'impact écologique d'Internet
L'impact écologique d'Internet
 
Faire du e-commerce en France avec WordPress
Faire du e-commerce en France avec WordPressFaire du e-commerce en France avec WordPress
Faire du e-commerce en France avec WordPress
 
WooCommerce WP-CLI Basics
WooCommerce WP-CLI BasicsWooCommerce WP-CLI Basics
WooCommerce WP-CLI Basics
 
WPtech: L'API Customizer pour les plugins
WPtech: L'API Customizer pour les pluginsWPtech: L'API Customizer pour les plugins
WPtech: L'API Customizer pour les plugins
 
Développez votre business en développant le business de vos clients
Développez votre business en développant le business de vos clientsDéveloppez votre business en développant le business de vos clients
Développez votre business en développant le business de vos clients
 
WordCamp Paris 2015 - Marketing WooCommerce pour augmenter les ventes - Rémi ...
WordCamp Paris 2015 - Marketing WooCommerce pour augmenter les ventes - Rémi ...WordCamp Paris 2015 - Marketing WooCommerce pour augmenter les ventes - Rémi ...
WordCamp Paris 2015 - Marketing WooCommerce pour augmenter les ventes - Rémi ...
 
Wordcamp Paris 2013
Wordcamp Paris 2013Wordcamp Paris 2013
Wordcamp Paris 2013
 

Ouvrir vos plugins aux autres développeurs - WPTech Nantes

  • 1. OUVRIR VOS PLUGINS AUX AUTRES DÉVELOPPEURS Petite leçon de modularité © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  • 2. Rémi CORSON Ninjineer @ WooThemes remicorson.com @remicorson © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  • 3. DON'T SPEAK FRENCH? HTTP://GOO.GL/W2G9RX © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  • 4. POURQUOI ? © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  • 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. "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. "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. "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. WOOCOMMERCE SUBSCRIPTIONS EST LE PRODUIT QUI SE VEND LE PLUS SUR WOOTHEMES.COM © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  • 10. LA SOCIÉTÉ Skyverge EMPLOIE 6 PERSONNES À TEMPS PLEIN © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  • 11. DÉFINITION © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  • 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. MODULABLE = FLEXIBLE, ADAPTABLE, AJUSTABLE © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  • 14. MODULABLE != INADAPTABLE, REBELLE, RÉCALCITRANT © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  • 15. EXEMPLES © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  • 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. UN PLUGIN DE FORUMS PERMETTANT DE RESTREINDRE LES CONVERSATIONS SELON LE RÔLE DES UTILISATEURS © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  • 18. UN PLUGIN TYPE SLIDER PERMETTANT DE CUSTOMISER LE VISUEL DES SLIDES © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  • 19. QUE PEUT-ON MODIFIER ? © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  • 20. TEXTES IMAGES DONNÉES VISUELS FONCTIONS © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  • 21. COMMENT ? © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  • 22. AVEC DES HOOKS © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  • 23. ADD_ACTION() DO_ACTION() ADD_FILTER() APPLY_FILTERS() © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  • 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. 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. CODE © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  • 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. CA FONCTIONNE MAIS... © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  • 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. CE QUI PERMET... © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  • 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. 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. 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. AUTRE MÉTHODE © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  • 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. 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. 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. 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. COMBINAISON DES 2 MÉTHODES © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  • 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. MODÈLES © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  • 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. 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. 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. 111 MODÈLES © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  • 46. API © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  • 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. WOOCOMMERCE REST API © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  • 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. 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. 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. © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  • 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. HOOKS MODÈLES APIS © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  • 55. GITHUB TRELLO GITTER GISTS TRANSIFEX © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  • 56. MERCI ! © Rémi Corson | WPtech Nantes | 29 Novembre 2014
  • 57. -25% SUR WOOTHEMES.COM WOO-WPTECH © Rémi Corson | WPtech Nantes | 29 Novembre 2014