SlideShare une entreprise Scribd logo
1  sur  63
Télécharger pour lire hors ligne
L'API CUSTOMIZER
POUR LES PLUGINS
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
REMICORSONAUTOMATTIC / WOOTHEMES / WOOCOMMERCE
@REMICORSON - REMICORSON.COM
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
L'EMETTEUR EST
TOUJOURS RESPONSABLE
DE L'IMCOMPREHENSION
DE SON MESSAGE© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
EXEMPLES
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
PENDANT CE TEMPS...
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
ET POUR LES PLUGINS ?
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
3 POSSIBILITÉS
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
> Hooker les options du thème
> Hooker Les options de votre plugin
> Hooker les options d'un autre plugin
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
DEMO© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
8 ETAPES
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
1 - AJOUTER UN BOUTON
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
// Ajout d'options aux paramètres existants
add_action(
'woocommerce_products_general_settings',
array(
$this,
'product_settings'
)
);
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
public function product_settings( $settings ) {
// Configuration du bouton
$customizer_settings[] = array(
'title' => __( 'WooCommerce Customizer', '' ),
'type' => 'title',
'id' => 'product_customizer',
);
$customizer_settings[] = array(
'title' => __( 'Pimp my shop!', '' ),
'desc' => __( 'Customize WooCommerce', '' ),
'type' => 'wc_product_customize_button',
'id' => 'product_customizer_button',
'link' => $this->customizer_url, // Attention !
);
$customizer_settings[] = array(
'type' => 'sectionend',
'id' => 'product_customizer_sectionend',
);
$settings = array_merge( $customizer_settings, $settings );
return $settings;
}
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
// Ajout d'une action pour notre bouton
add_action(
'woocommerce_admin_field_wc_product_customize_button',
array(
$this,
'customize_button'
)
);
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
// Création du rendu du bouton
public function customize_button( $settings ) {
?>
<tr valign="top">
<th scope="row" class="titledesc"><?php echo $settings['desc'];?></th>
<td class="forminp forminp-<?php echo sanitize_title( $settings['type'] ) ?>">
<a href="<?php echo $settings['link']; ?>">
<button
name="<?php echo esc_attr( $settings['id'] ); ?>"
id="<?php echo esc_attr( $settings['id'] ); ?>"
style="<?php echo esc_attr( $settings['css'] ); ?>"
class="button-secondary <?php echo esc_attr( $settings['class'] ); ?>"
type="button">
<?php echo $settings['title']; ?>
</button>
</a>
</td>
</tr>
<?php
return true;
}
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
2 - DÉTERMINER L'URL DU CUSTOMIZER
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
/**
* Constructeur
*/
public function __construct() {
self::$_this = $this;
$this->_set_customizer_url();
//...
}
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
// Définition de l'URL du Customizer
private function _set_customizer_url() {
$url = admin_url( 'customize.php' );
$url = add_query_arg( 'wc-product-customizer', 'true', $url );
$url = add_query_arg(
'url',
wp_nonce_url( site_url() . '/?wc-product-customizer=true', 'preview-shop' ),
$url ); // Passage d'un marqueur d'URL
$url = add_query_arg(
'return',
urlencode( add_query_arg( array(
'page' => 'wc-settings',
'tab' => 'products'
),
admin_url( 'admin.php' )
)
),
$url ); // URL de retour
$this->customizer_url = esc_url_raw( $url );
return true;
}
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
3 - CRÉER LES OPTIONS DU CUSTOMIZER
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
add_filter( 'customize_register', array(
$this,
'customizer_sections'
),
40
);
add_filter( 'customize_register', array(
$this,
'customizer_settings'
)
);
add_filter( 'customize_register', array(
$this,
'customizer_controls'
),
50
);
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
// Ajout de section
$wp_customize->add_section( 'wc_product_colors', array (
'title' => __( 'WooCommerce', '' ),
'capability' => 'edit_theme_options',
'priority' => 10,
) );
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
$wp_customize->add_setting( 'woocommerce_buttons_background_color', array(
'type' => 'option', // Attention !
'default' => '#f5f5f5',
'transport' => 'postMessage',
) );
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
$wp_customize->add_control( new WP_Customize_Color_Control(
$wp_customize,
'wc_product_bg_color_control',
array(
'label' => __( 'Button Background Color', '' ),
'priority' => 10,
'section' => 'wc_product_colors',
'settings' => 'woocommerce_buttons_background_color',
)
)
);
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
4 - CHARGER LA PAGE CONCERNÉE
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
// Redirection du customizer sur la page boutique
add_action(
'template_redirect',
array(
$this,
'load_shop_page'
)
);
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
public function load_shop_page( $wp_query ) {
// chargement conditionnel basé sur get_query_var
if ( get_query_var( $this->_trigger ) ) {
wp_redirect( get_permalink( get_option( 'woocommerce_shop_page_id' ) ) );
exit;
}
return $wp_query;
}
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
PETITE PAUSE
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
5 - AJOUTER UN MARQUEUR
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
public function __construct() {
self::$_this = $this;
// Définition d'un marqueur d'URL
$this->_trigger = 'wc-product-customizer';
}
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
// Ajout du marqueur dans l'URL
add_filter( 'query_vars', array(
$this,
'add_query_vars'
)
);
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
public function add_query_vars( $vars ) {
$vars[] = $this->_trigger;
return $vars;
}
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
6 - FAIRE UN NETTOYAGE DE PRINTEMPS
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
if ( isset( $_GET[ $this->customizer_trigger ] ) ) {
//...
}
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
// Suppression des options du thème
add_filter( 'customize_register', array(
$this,
'remove_sections'
),
40
);
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
public function remove_sections( $wp_customize ) {
global $wp_customize;
$wp_customize->remove_section( 'themes' );
return true;
}
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
// Supprime les panels non désirés
public function remove_panels( $wp_customize ) {
global $wp_customize;
// crée une erreur de type 'undefined object notice'
// bug WordPress core
//$wp_customize->remove_panel( 'nav_menus' );
// Astuce
$wp_customize->get_panel( 'nav_menus' )->active_callback = '__return_false';
return true;
}
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
7 - AJOUT DE CSS & JS
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
( function( $ ) {
'use strict';
wp.customize( 'woocommerce_buttons_background_color', function( value ) {
value.bind( function( newval ) {
$( '.button' ).css( 'background-color', newval );
} );
} );
} )( jQuery );
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
public function enqueue_customizer_script() {
wp_enqueue_script(
'woocommerce-product-customizer-live-preview',
WC_PRODUCT_CUSTOMIZER_PLUGIN_URL . '/assets/js/customizer.js',
array(
'jquery',
'customize-preview'
),
WC_PRODUCT_CUSTOMIZER_VERSION,
true
);
return true;
}
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
add_filter( 'wp_footer', array( $this, 'add_styles' ) );
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
public function add_styles() {
$styles = "n<style type='text/css' media='screen'>n";
$bg_color = '.woocommerce a.button { background-color: ';
$bg_color .= get_option( 'woocommerce_buttons_background_color', '#f5f5f5' )
$bg_color .= '; }';
$styles .= $bg_color;
$styles .= "n</style>n";
echo $styles;
}
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
8 - LUSTRER LA BÊTE...
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
// Afficher uniquement nos options
if ( isset( $_GET[ $this->customizer_trigger ] ) ) {
add_filter(
'customize_control_active',
array(
$this,
'control_filter'
),
10, 2
);
}
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
public function control_filter( $active, $control ) {
if ( in_array( $control->section, array( 'wc_product_colors' ) ) ) {
return true;
}
return false;
}
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
QUESTIONS ?
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
RDV À 14H00AVEC JULIEN OGER & PIERRE DARGHAM
" PENSEZ WEB-PERFORMANCE AVEC WORDPRESS "
© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Contenu connexe

Tendances

Use Symfony2 components inside WordPress
Use Symfony2 components inside WordPress Use Symfony2 components inside WordPress
Use Symfony2 components inside WordPress Maurizio Pelizzone
 
Curso Symfony - Clase 2
Curso Symfony - Clase 2Curso Symfony - Clase 2
Curso Symfony - Clase 2Javier Eguiluz
 
Beyond the WordPress 5 minute Install
Beyond the WordPress 5 minute InstallBeyond the WordPress 5 minute Install
Beyond the WordPress 5 minute InstallSteve Taylor
 
Getting to The Loop - London Wordpress Meetup July 28th
Getting to The Loop - London Wordpress Meetup  July 28thGetting to The Loop - London Wordpress Meetup  July 28th
Getting to The Loop - London Wordpress Meetup July 28thChris Adams
 
Optimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
Optimising Your Front End Workflow With Symfony, Twig, Bower and GulpOptimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
Optimising Your Front End Workflow With Symfony, Twig, Bower and GulpMatthew Davis
 
Keeping the frontend under control with Symfony and Webpack
Keeping the frontend under control with Symfony and WebpackKeeping the frontend under control with Symfony and Webpack
Keeping the frontend under control with Symfony and WebpackIgnacio Martín
 
Pyramid Lighter/Faster/Better web apps
Pyramid Lighter/Faster/Better web appsPyramid Lighter/Faster/Better web apps
Pyramid Lighter/Faster/Better web appsDylan Jay
 
How to start with eZ Publish 5
How to start with eZ Publish 5How to start with eZ Publish 5
How to start with eZ Publish 5Donat Fritschy
 
Object Oriented Programming for WordPress Plugin Development
Object Oriented Programming for WordPress Plugin DevelopmentObject Oriented Programming for WordPress Plugin Development
Object Oriented Programming for WordPress Plugin Developmentmtoppa
 
Take Command of WordPress With WP-CLI
Take Command of WordPress With WP-CLITake Command of WordPress With WP-CLI
Take Command of WordPress With WP-CLIDiana Thompson
 
Vagrant WordCamp Hamilton
Vagrant  WordCamp HamiltonVagrant  WordCamp Hamilton
Vagrant WordCamp HamiltonPaul Bearne
 
Demystifying Hooks, Actions & Filters - WordCamp Belfast 2018
Demystifying Hooks, Actions & Filters - WordCamp Belfast 2018Demystifying Hooks, Actions & Filters - WordCamp Belfast 2018
Demystifying Hooks, Actions & Filters - WordCamp Belfast 2018Damien Carbery
 
Symfony tips and tricks
Symfony tips and tricksSymfony tips and tricks
Symfony tips and tricksJavier Eguiluz
 
Widget Summit 2008
Widget Summit 2008Widget Summit 2008
Widget Summit 2008Volkan Unsal
 
Webinar: AngularJS and the WordPress REST API
Webinar: AngularJS and the WordPress REST APIWebinar: AngularJS and the WordPress REST API
Webinar: AngularJS and the WordPress REST APIWP Engine UK
 
Symfony: Your Next Microframework (SymfonyCon 2015)
Symfony: Your Next Microframework (SymfonyCon 2015)Symfony: Your Next Microframework (SymfonyCon 2015)
Symfony: Your Next Microframework (SymfonyCon 2015)Ryan Weaver
 

Tendances (20)

Use Symfony2 components inside WordPress
Use Symfony2 components inside WordPress Use Symfony2 components inside WordPress
Use Symfony2 components inside WordPress
 
Curso Symfony - Clase 2
Curso Symfony - Clase 2Curso Symfony - Clase 2
Curso Symfony - Clase 2
 
Beyond the WordPress 5 minute Install
Beyond the WordPress 5 minute InstallBeyond the WordPress 5 minute Install
Beyond the WordPress 5 minute Install
 
Getting to The Loop - London Wordpress Meetup July 28th
Getting to The Loop - London Wordpress Meetup  July 28thGetting to The Loop - London Wordpress Meetup  July 28th
Getting to The Loop - London Wordpress Meetup July 28th
 
SocketStream
SocketStreamSocketStream
SocketStream
 
Optimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
Optimising Your Front End Workflow With Symfony, Twig, Bower and GulpOptimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
Optimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
 
Keeping the frontend under control with Symfony and Webpack
Keeping the frontend under control with Symfony and WebpackKeeping the frontend under control with Symfony and Webpack
Keeping the frontend under control with Symfony and Webpack
 
Pyramid Lighter/Faster/Better web apps
Pyramid Lighter/Faster/Better web appsPyramid Lighter/Faster/Better web apps
Pyramid Lighter/Faster/Better web apps
 
How to start with eZ Publish 5
How to start with eZ Publish 5How to start with eZ Publish 5
How to start with eZ Publish 5
 
Object Oriented Programming for WordPress Plugin Development
Object Oriented Programming for WordPress Plugin DevelopmentObject Oriented Programming for WordPress Plugin Development
Object Oriented Programming for WordPress Plugin Development
 
Take Command of WordPress With WP-CLI
Take Command of WordPress With WP-CLITake Command of WordPress With WP-CLI
Take Command of WordPress With WP-CLI
 
Vagrant WordCamp Hamilton
Vagrant  WordCamp HamiltonVagrant  WordCamp Hamilton
Vagrant WordCamp Hamilton
 
Demystifying Hooks, Actions & Filters - WordCamp Belfast 2018
Demystifying Hooks, Actions & Filters - WordCamp Belfast 2018Demystifying Hooks, Actions & Filters - WordCamp Belfast 2018
Demystifying Hooks, Actions & Filters - WordCamp Belfast 2018
 
Symfony tips and tricks
Symfony tips and tricksSymfony tips and tricks
Symfony tips and tricks
 
Widget Summit 2008
Widget Summit 2008Widget Summit 2008
Widget Summit 2008
 
Fast by Default
Fast by DefaultFast by Default
Fast by Default
 
Webinar: AngularJS and the WordPress REST API
Webinar: AngularJS and the WordPress REST APIWebinar: AngularJS and the WordPress REST API
Webinar: AngularJS and the WordPress REST API
 
Css web gallery
Css web galleryCss web gallery
Css web gallery
 
Symfony: Your Next Microframework (SymfonyCon 2015)
Symfony: Your Next Microframework (SymfonyCon 2015)Symfony: Your Next Microframework (SymfonyCon 2015)
Symfony: Your Next Microframework (SymfonyCon 2015)
 
Complex Sites with Silex
Complex Sites with SilexComplex Sites with Silex
Complex Sites with Silex
 

En vedette

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 2015PXNetwork
 
Comment créer des hooks dans vos développements WordPress - WP Tech 2015
Comment créer des hooks dans vos développements WordPress - WP Tech 2015Comment créer des hooks dans vos développements WordPress - WP Tech 2015
Comment créer des hooks dans vos développements WordPress - WP Tech 2015Boiteaweb
 
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...pierredargham
 
Migrer les données de n'importe quel CMS vers WordPress
 Migrer les données de n'importe quel CMS vers WordPress Migrer les données de n'importe quel CMS vers WordPress
Migrer les données de n'importe quel CMS vers WordPressTony Archambeau
 
WooCommerce: How to Customize WordPress via PHP Snippets
WooCommerce: How to Customize WordPress via PHP SnippetsWooCommerce: How to Customize WordPress via PHP Snippets
WooCommerce: How to Customize WordPress via PHP SnippetsRodolfo Melogli
 
PDFs à la volée avec TCPDF
PDFs à la volée avec TCPDFPDFs à la volée avec TCPDF
PDFs à la volée avec TCPDFJenny Beaumont
 
Making WooCommerce Your Own
Making WooCommerce Your OwnMaking WooCommerce Your Own
Making WooCommerce Your OwnLeo Gopal
 
Master WooCommerce Troubleshooting
Master WooCommerce TroubleshootingMaster WooCommerce Troubleshooting
Master WooCommerce TroubleshootingRodolfo Melogli
 
Cómo crear una tienda online en wordpress
Cómo crear una tienda online en wordpressCómo crear una tienda online en wordpress
Cómo crear una tienda online en wordpressBeatriz González Pozo
 
Plataformas de Comercio Electrónico Unificadas, por Javier Hoyos (PwC)
Plataformas de Comercio Electrónico Unificadas, por Javier Hoyos (PwC) Plataformas de Comercio Electrónico Unificadas, por Javier Hoyos (PwC)
Plataformas de Comercio Electrónico Unificadas, por Javier Hoyos (PwC) EOI Escuela de Organización Industrial
 
Instagram para principiantes (INCLUYE NOVEDADES DE SEPTIEMBRE-15)
Instagram para principiantes (INCLUYE NOVEDADES DE SEPTIEMBRE-15)Instagram para principiantes (INCLUYE NOVEDADES DE SEPTIEMBRE-15)
Instagram para principiantes (INCLUYE NOVEDADES DE SEPTIEMBRE-15)Beatriz González Pozo
 
Mise à jour sur la sécurité WordPress – WordCamp Bordeaux 2017
Mise à jour sur la sécurité WordPress – WordCamp Bordeaux 2017Mise à jour sur la sécurité WordPress – WordCamp Bordeaux 2017
Mise à jour sur la sécurité WordPress – WordCamp Bordeaux 2017Boiteaweb
 
Tiendas de Ropa
Tiendas de RopaTiendas de Ropa
Tiendas de RopaUniclick
 
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 WordPresscorsonr
 
Pourquoi WordPress est le CMS le plus sécurisé ?
Pourquoi WordPress est le CMS le plus sécurisé ?Pourquoi WordPress est le CMS le plus sécurisé ?
Pourquoi WordPress est le CMS le plus sécurisé ?Boiteaweb
 
[WordCamp Bordeaux] Fusionner sa politique print et web avec WordPress
[WordCamp Bordeaux] Fusionner sa politique print et web avec WordPress [WordCamp Bordeaux] Fusionner sa politique print et web avec WordPress
[WordCamp Bordeaux] Fusionner sa politique print et web avec WordPress Grillot Sébastien
 
Pourquoi coder son propre thème WordPress
Pourquoi coder son propre thème WordPressPourquoi coder son propre thème WordPress
Pourquoi coder son propre thème WordPressThomas Villain
 
Ouvrir vos plugins aux autres développeurs - WPTech Nantes
Ouvrir vos plugins aux autres développeurs - WPTech NantesOuvrir vos plugins aux autres développeurs - WPTech Nantes
Ouvrir vos plugins aux autres développeurs - WPTech Nantescorsonr
 
Tu tienda virtual en Woocommerce
Tu tienda virtual en WoocommerceTu tienda virtual en Woocommerce
Tu tienda virtual en WoocommerceJavier Garcia
 

En vedette (20)

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
 
Comment créer des hooks dans vos développements WordPress - WP Tech 2015
Comment créer des hooks dans vos développements WordPress - WP Tech 2015Comment créer des hooks dans vos développements WordPress - WP Tech 2015
Comment créer des hooks dans vos développements WordPress - WP Tech 2015
 
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...
 
Migrer les données de n'importe quel CMS vers WordPress
 Migrer les données de n'importe quel CMS vers WordPress Migrer les données de n'importe quel CMS vers WordPress
Migrer les données de n'importe quel CMS vers WordPress
 
WooCommerce: How to Customize WordPress via PHP Snippets
WooCommerce: How to Customize WordPress via PHP SnippetsWooCommerce: How to Customize WordPress via PHP Snippets
WooCommerce: How to Customize WordPress via PHP Snippets
 
PDFs à la volée avec TCPDF
PDFs à la volée avec TCPDFPDFs à la volée avec TCPDF
PDFs à la volée avec TCPDF
 
Making WooCommerce Your Own
Making WooCommerce Your OwnMaking WooCommerce Your Own
Making WooCommerce Your Own
 
Master WooCommerce Troubleshooting
Master WooCommerce TroubleshootingMaster WooCommerce Troubleshooting
Master WooCommerce Troubleshooting
 
El trabajo del Community Manager
El trabajo del Community ManagerEl trabajo del Community Manager
El trabajo del Community Manager
 
Cómo crear una tienda online en wordpress
Cómo crear una tienda online en wordpressCómo crear una tienda online en wordpress
Cómo crear una tienda online en wordpress
 
Plataformas de Comercio Electrónico Unificadas, por Javier Hoyos (PwC)
Plataformas de Comercio Electrónico Unificadas, por Javier Hoyos (PwC) Plataformas de Comercio Electrónico Unificadas, por Javier Hoyos (PwC)
Plataformas de Comercio Electrónico Unificadas, por Javier Hoyos (PwC)
 
Instagram para principiantes (INCLUYE NOVEDADES DE SEPTIEMBRE-15)
Instagram para principiantes (INCLUYE NOVEDADES DE SEPTIEMBRE-15)Instagram para principiantes (INCLUYE NOVEDADES DE SEPTIEMBRE-15)
Instagram para principiantes (INCLUYE NOVEDADES DE SEPTIEMBRE-15)
 
Mise à jour sur la sécurité WordPress – WordCamp Bordeaux 2017
Mise à jour sur la sécurité WordPress – WordCamp Bordeaux 2017Mise à jour sur la sécurité WordPress – WordCamp Bordeaux 2017
Mise à jour sur la sécurité WordPress – WordCamp Bordeaux 2017
 
Tiendas de Ropa
Tiendas de RopaTiendas de Ropa
Tiendas de Ropa
 
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
 
Pourquoi WordPress est le CMS le plus sécurisé ?
Pourquoi WordPress est le CMS le plus sécurisé ?Pourquoi WordPress est le CMS le plus sécurisé ?
Pourquoi WordPress est le CMS le plus sécurisé ?
 
[WordCamp Bordeaux] Fusionner sa politique print et web avec WordPress
[WordCamp Bordeaux] Fusionner sa politique print et web avec WordPress [WordCamp Bordeaux] Fusionner sa politique print et web avec WordPress
[WordCamp Bordeaux] Fusionner sa politique print et web avec WordPress
 
Pourquoi coder son propre thème WordPress
Pourquoi coder son propre thème WordPressPourquoi coder son propre thème WordPress
Pourquoi coder son propre thème WordPress
 
Ouvrir vos plugins aux autres développeurs - WPTech Nantes
Ouvrir vos plugins aux autres développeurs - WPTech NantesOuvrir vos plugins aux autres développeurs - WPTech Nantes
Ouvrir vos plugins aux autres développeurs - WPTech Nantes
 
Tu tienda virtual en Woocommerce
Tu tienda virtual en WoocommerceTu tienda virtual en Woocommerce
Tu tienda virtual en Woocommerce
 

Similaire à WPtech: L'API Customizer pour les plugins

Unit testing after Zend Framework 1.8
Unit testing after Zend Framework 1.8Unit testing after Zend Framework 1.8
Unit testing after Zend Framework 1.8Michelangelo van Dam
 
WordCamp LA 2014- Writing Code that Scales
WordCamp LA 2014-  Writing Code that ScalesWordCamp LA 2014-  Writing Code that Scales
WordCamp LA 2014- Writing Code that ScalesSpectrOMTech.com
 
WCMTL 15 - Create your own shortcode (Fr)
WCMTL 15 - Create your own shortcode (Fr)WCMTL 15 - Create your own shortcode (Fr)
WCMTL 15 - Create your own shortcode (Fr)MichaelBontyes
 
10 Things Every Plugin Developer Should Know (WordCamp Atlanta 2013)
10 Things Every Plugin Developer Should Know (WordCamp Atlanta 2013)10 Things Every Plugin Developer Should Know (WordCamp Atlanta 2013)
10 Things Every Plugin Developer Should Know (WordCamp Atlanta 2013)arcware
 
Doctrine For Beginners
Doctrine For BeginnersDoctrine For Beginners
Doctrine For BeginnersJonathan Wage
 
Meet Magento DE 2016 - Kristof Ringleff - Growing up with Magento
Meet Magento DE 2016 - Kristof Ringleff - Growing up with MagentoMeet Magento DE 2016 - Kristof Ringleff - Growing up with Magento
Meet Magento DE 2016 - Kristof Ringleff - Growing up with MagentoKristof Ringleff
 
[Bristol WordPress] Supercharging WordPress Development
[Bristol WordPress] Supercharging WordPress Development[Bristol WordPress] Supercharging WordPress Development
[Bristol WordPress] Supercharging WordPress DevelopmentAdam Tomat
 
2015.02.05 alexis von glasow - faster php testing process with atoum
2015.02.05   alexis von glasow - faster php testing process with atoum2015.02.05   alexis von glasow - faster php testing process with atoum
2015.02.05 alexis von glasow - faster php testing process with atouminovia
 
Steam Learn: Faster php testing process with Atoum
Steam Learn: Faster php testing process with AtoumSteam Learn: Faster php testing process with Atoum
Steam Learn: Faster php testing process with Atouminovia
 
AngularJS: What's the Big Deal?
AngularJS: What's the Big Deal?AngularJS: What's the Big Deal?
AngularJS: What's the Big Deal?Jim Duffy
 
前后端mvc经验 - webrebuild 2011 session
前后端mvc经验 - webrebuild 2011 session前后端mvc经验 - webrebuild 2011 session
前后端mvc经验 - webrebuild 2011 sessionRANK LIU
 
Using and reusing CakePHP plugins
Using and reusing CakePHP pluginsUsing and reusing CakePHP plugins
Using and reusing CakePHP pluginsPierre MARTIN
 
Yves & Zed @ Developer Conference 2013
Yves & Zed @ Developer Conference 2013Yves & Zed @ Developer Conference 2013
Yves & Zed @ Developer Conference 2013FabianWesnerBerlin
 
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)Mike Schinkel
 
Using Geeklog as a Web Application Framework
Using Geeklog as a Web Application FrameworkUsing Geeklog as a Web Application Framework
Using Geeklog as a Web Application FrameworkDirk Haun
 
Security and Performance - Italian WordPress Conference
Security and Performance - Italian WordPress ConferenceSecurity and Performance - Italian WordPress Conference
Security and Performance - Italian WordPress ConferenceMaurizio Pelizzone
 
Ten Battle-Tested Tips for Atlassian Connect Add-ons
Ten Battle-Tested Tips for Atlassian Connect Add-onsTen Battle-Tested Tips for Atlassian Connect Add-ons
Ten Battle-Tested Tips for Atlassian Connect Add-onsAtlassian
 
Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12Michelangelo van Dam
 

Similaire à WPtech: L'API Customizer pour les plugins (20)

Unit testing after Zend Framework 1.8
Unit testing after Zend Framework 1.8Unit testing after Zend Framework 1.8
Unit testing after Zend Framework 1.8
 
WordCamp LA 2014- Writing Code that Scales
WordCamp LA 2014-  Writing Code that ScalesWordCamp LA 2014-  Writing Code that Scales
WordCamp LA 2014- Writing Code that Scales
 
WCMTL 15 - Create your own shortcode (Fr)
WCMTL 15 - Create your own shortcode (Fr)WCMTL 15 - Create your own shortcode (Fr)
WCMTL 15 - Create your own shortcode (Fr)
 
10 Things Every Plugin Developer Should Know (WordCamp Atlanta 2013)
10 Things Every Plugin Developer Should Know (WordCamp Atlanta 2013)10 Things Every Plugin Developer Should Know (WordCamp Atlanta 2013)
10 Things Every Plugin Developer Should Know (WordCamp Atlanta 2013)
 
QA for PHP projects
QA for PHP projectsQA for PHP projects
QA for PHP projects
 
Doctrine For Beginners
Doctrine For BeginnersDoctrine For Beginners
Doctrine For Beginners
 
Meet Magento DE 2016 - Kristof Ringleff - Growing up with Magento
Meet Magento DE 2016 - Kristof Ringleff - Growing up with MagentoMeet Magento DE 2016 - Kristof Ringleff - Growing up with Magento
Meet Magento DE 2016 - Kristof Ringleff - Growing up with Magento
 
[Bristol WordPress] Supercharging WordPress Development
[Bristol WordPress] Supercharging WordPress Development[Bristol WordPress] Supercharging WordPress Development
[Bristol WordPress] Supercharging WordPress Development
 
2015.02.05 alexis von glasow - faster php testing process with atoum
2015.02.05   alexis von glasow - faster php testing process with atoum2015.02.05   alexis von glasow - faster php testing process with atoum
2015.02.05 alexis von glasow - faster php testing process with atoum
 
Steam Learn: Faster php testing process with Atoum
Steam Learn: Faster php testing process with AtoumSteam Learn: Faster php testing process with Atoum
Steam Learn: Faster php testing process with Atoum
 
AngularJS: What's the Big Deal?
AngularJS: What's the Big Deal?AngularJS: What's the Big Deal?
AngularJS: What's the Big Deal?
 
前后端mvc经验 - webrebuild 2011 session
前后端mvc经验 - webrebuild 2011 session前后端mvc经验 - webrebuild 2011 session
前后端mvc经验 - webrebuild 2011 session
 
Using and reusing CakePHP plugins
Using and reusing CakePHP pluginsUsing and reusing CakePHP plugins
Using and reusing CakePHP plugins
 
Yves & Zed @ Developer Conference 2013
Yves & Zed @ Developer Conference 2013Yves & Zed @ Developer Conference 2013
Yves & Zed @ Developer Conference 2013
 
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)
 
WordCamp Praga 2015
WordCamp Praga 2015WordCamp Praga 2015
WordCamp Praga 2015
 
Using Geeklog as a Web Application Framework
Using Geeklog as a Web Application FrameworkUsing Geeklog as a Web Application Framework
Using Geeklog as a Web Application Framework
 
Security and Performance - Italian WordPress Conference
Security and Performance - Italian WordPress ConferenceSecurity and Performance - Italian WordPress Conference
Security and Performance - Italian WordPress Conference
 
Ten Battle-Tested Tips for Atlassian Connect Add-ons
Ten Battle-Tested Tips for Atlassian Connect Add-onsTen Battle-Tested Tips for Atlassian Connect Add-ons
Ten Battle-Tested Tips for Atlassian Connect Add-ons
 
Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12
 

Plus de corsonr

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 associatifcorsonr
 
L'impact écologique d'Internet
L'impact écologique d'InternetL'impact écologique d'Internet
L'impact écologique d'Internetcorsonr
 
WooCommerce WP-CLI Basics
WooCommerce WP-CLI BasicsWooCommerce WP-CLI Basics
WooCommerce WP-CLI Basicscorsonr
 
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 clientscorsonr
 
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 ...corsonr
 
Wordcamp Paris 2013
Wordcamp Paris 2013Wordcamp Paris 2013
Wordcamp Paris 2013corsonr
 

Plus de corsonr (6)

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
 
WooCommerce WP-CLI Basics
WooCommerce WP-CLI BasicsWooCommerce WP-CLI Basics
WooCommerce WP-CLI Basics
 
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
 

Dernier

Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170Sonam Pathan
 
Film cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasaFilm cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasa494f574xmv
 
Q4-1-Illustrating-Hypothesis-Testing.pptx
Q4-1-Illustrating-Hypothesis-Testing.pptxQ4-1-Illustrating-Hypothesis-Testing.pptx
Q4-1-Illustrating-Hypothesis-Testing.pptxeditsforyah
 
PHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationPHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationLinaWolf1
 
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书rnrncn29
 
NSX-T and Service Interfaces presentation
NSX-T and Service Interfaces presentationNSX-T and Service Interfaces presentation
NSX-T and Service Interfaces presentationMarko4394
 
Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Paul Calvano
 
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书rnrncn29
 
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作ys8omjxb
 
Top 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptxTop 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptxDyna Gilbert
 
Contact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New DelhiContact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New Delhimiss dipika
 
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一z xss
 
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Sonam Pathan
 
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书zdzoqco
 
SCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is prediSCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is predieusebiomeyer
 

Dernier (17)

Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170
 
Film cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasaFilm cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasa
 
Q4-1-Illustrating-Hypothesis-Testing.pptx
Q4-1-Illustrating-Hypothesis-Testing.pptxQ4-1-Illustrating-Hypothesis-Testing.pptx
Q4-1-Illustrating-Hypothesis-Testing.pptx
 
PHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationPHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 Documentation
 
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
 
NSX-T and Service Interfaces presentation
NSX-T and Service Interfaces presentationNSX-T and Service Interfaces presentation
NSX-T and Service Interfaces presentation
 
Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24
 
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Serviceyoung call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
 
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
 
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
 
Top 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptxTop 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptx
 
Contact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New DelhiContact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New Delhi
 
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
 
Hot Sexy call girls in Rk Puram 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in  Rk Puram 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in  Rk Puram 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Rk Puram 🔝 9953056974 🔝 Delhi escort Service
 
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
 
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
 
SCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is prediSCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is predi
 

WPtech: L'API Customizer pour les plugins

  • 1. L'API CUSTOMIZER POUR LES PLUGINS © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 2. REMICORSONAUTOMATTIC / WOOTHEMES / WOOCOMMERCE @REMICORSON - REMICORSON.COM © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 3. © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 4. L'EMETTEUR EST TOUJOURS RESPONSABLE DE L'IMCOMPREHENSION DE SON MESSAGE© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 5. EXEMPLES © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 6. © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 7. © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 8. © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 9. PENDANT CE TEMPS... © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 10. © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 11. ET POUR LES PLUGINS ? © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 12. © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 13. 3 POSSIBILITÉS © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 14. > Hooker les options du thème > Hooker Les options de votre plugin > Hooker les options d'un autre plugin © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 15. DEMO© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 16. © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 17. 8 ETAPES © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 18. 1 - AJOUTER UN BOUTON © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 19. © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 20. // Ajout d'options aux paramètres existants add_action( 'woocommerce_products_general_settings', array( $this, 'product_settings' ) ); © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 21. public function product_settings( $settings ) { // Configuration du bouton $customizer_settings[] = array( 'title' => __( 'WooCommerce Customizer', '' ), 'type' => 'title', 'id' => 'product_customizer', ); $customizer_settings[] = array( 'title' => __( 'Pimp my shop!', '' ), 'desc' => __( 'Customize WooCommerce', '' ), 'type' => 'wc_product_customize_button', 'id' => 'product_customizer_button', 'link' => $this->customizer_url, // Attention ! ); $customizer_settings[] = array( 'type' => 'sectionend', 'id' => 'product_customizer_sectionend', ); $settings = array_merge( $customizer_settings, $settings ); return $settings; } © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 22. // Ajout d'une action pour notre bouton add_action( 'woocommerce_admin_field_wc_product_customize_button', array( $this, 'customize_button' ) ); © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 23. // Création du rendu du bouton public function customize_button( $settings ) { ?> <tr valign="top"> <th scope="row" class="titledesc"><?php echo $settings['desc'];?></th> <td class="forminp forminp-<?php echo sanitize_title( $settings['type'] ) ?>"> <a href="<?php echo $settings['link']; ?>"> <button name="<?php echo esc_attr( $settings['id'] ); ?>" id="<?php echo esc_attr( $settings['id'] ); ?>" style="<?php echo esc_attr( $settings['css'] ); ?>" class="button-secondary <?php echo esc_attr( $settings['class'] ); ?>" type="button"> <?php echo $settings['title']; ?> </button> </a> </td> </tr> <?php return true; } © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 24. 2 - DÉTERMINER L'URL DU CUSTOMIZER © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 25. /** * Constructeur */ public function __construct() { self::$_this = $this; $this->_set_customizer_url(); //... } © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 26. // Définition de l'URL du Customizer private function _set_customizer_url() { $url = admin_url( 'customize.php' ); $url = add_query_arg( 'wc-product-customizer', 'true', $url ); $url = add_query_arg( 'url', wp_nonce_url( site_url() . '/?wc-product-customizer=true', 'preview-shop' ), $url ); // Passage d'un marqueur d'URL $url = add_query_arg( 'return', urlencode( add_query_arg( array( 'page' => 'wc-settings', 'tab' => 'products' ), admin_url( 'admin.php' ) ) ), $url ); // URL de retour $this->customizer_url = esc_url_raw( $url ); return true; } © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 27. © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 28. 3 - CRÉER LES OPTIONS DU CUSTOMIZER © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 29. add_filter( 'customize_register', array( $this, 'customizer_sections' ), 40 ); add_filter( 'customize_register', array( $this, 'customizer_settings' ) ); add_filter( 'customize_register', array( $this, 'customizer_controls' ), 50 ); © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 30. // Ajout de section $wp_customize->add_section( 'wc_product_colors', array ( 'title' => __( 'WooCommerce', '' ), 'capability' => 'edit_theme_options', 'priority' => 10, ) ); © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 31. $wp_customize->add_setting( 'woocommerce_buttons_background_color', array( 'type' => 'option', // Attention ! 'default' => '#f5f5f5', 'transport' => 'postMessage', ) ); © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 32. $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'wc_product_bg_color_control', array( 'label' => __( 'Button Background Color', '' ), 'priority' => 10, 'section' => 'wc_product_colors', 'settings' => 'woocommerce_buttons_background_color', ) ) ); © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 33. 4 - CHARGER LA PAGE CONCERNÉE © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 34. // Redirection du customizer sur la page boutique add_action( 'template_redirect', array( $this, 'load_shop_page' ) ); © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 35. public function load_shop_page( $wp_query ) { // chargement conditionnel basé sur get_query_var if ( get_query_var( $this->_trigger ) ) { wp_redirect( get_permalink( get_option( 'woocommerce_shop_page_id' ) ) ); exit; } return $wp_query; } © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 36. PETITE PAUSE © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 37. © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 38. © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 39. © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 40. © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 41. © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 42. 5 - AJOUTER UN MARQUEUR © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 43. public function __construct() { self::$_this = $this; // Définition d'un marqueur d'URL $this->_trigger = 'wc-product-customizer'; } © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 44. // Ajout du marqueur dans l'URL add_filter( 'query_vars', array( $this, 'add_query_vars' ) ); © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 45. public function add_query_vars( $vars ) { $vars[] = $this->_trigger; return $vars; } © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 46. 6 - FAIRE UN NETTOYAGE DE PRINTEMPS © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 47. if ( isset( $_GET[ $this->customizer_trigger ] ) ) { //... } © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 48. // Suppression des options du thème add_filter( 'customize_register', array( $this, 'remove_sections' ), 40 ); © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 49. public function remove_sections( $wp_customize ) { global $wp_customize; $wp_customize->remove_section( 'themes' ); return true; } © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 50. // Supprime les panels non désirés public function remove_panels( $wp_customize ) { global $wp_customize; // crée une erreur de type 'undefined object notice' // bug WordPress core //$wp_customize->remove_panel( 'nav_menus' ); // Astuce $wp_customize->get_panel( 'nav_menus' )->active_callback = '__return_false'; return true; } © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 51. © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 52. 7 - AJOUT DE CSS & JS © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 53. ( function( $ ) { 'use strict'; wp.customize( 'woocommerce_buttons_background_color', function( value ) { value.bind( function( newval ) { $( '.button' ).css( 'background-color', newval ); } ); } ); } )( jQuery ); © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 54. public function enqueue_customizer_script() { wp_enqueue_script( 'woocommerce-product-customizer-live-preview', WC_PRODUCT_CUSTOMIZER_PLUGIN_URL . '/assets/js/customizer.js', array( 'jquery', 'customize-preview' ), WC_PRODUCT_CUSTOMIZER_VERSION, true ); return true; } © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 55. add_filter( 'wp_footer', array( $this, 'add_styles' ) ); © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 56. public function add_styles() { $styles = "n<style type='text/css' media='screen'>n"; $bg_color = '.woocommerce a.button { background-color: '; $bg_color .= get_option( 'woocommerce_buttons_background_color', '#f5f5f5' ) $bg_color .= '; }'; $styles .= $bg_color; $styles .= "n</style>n"; echo $styles; } © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 57. 8 - LUSTRER LA BÊTE... © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 58. © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 59. © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 60. // Afficher uniquement nos options if ( isset( $_GET[ $this->customizer_trigger ] ) ) { add_filter( 'customize_control_active', array( $this, 'control_filter' ), 10, 2 ); } © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 61. public function control_filter( $active, $control ) { if ( in_array( $control->section, array( 'wc_product_colors' ) ) ) { return true; } return false; } © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 62. QUESTIONS ? © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015
  • 63. RDV À 14H00AVEC JULIEN OGER & PIERRE DARGHAM " PENSEZ WEB-PERFORMANCE AVEC WORDPRESS " © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015