WPtech: L'API Customizer pour les plugins

63
L'API CUSTOMIZER POUR LES PLUGINS © REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Transcript of WPtech: L'API Customizer pour les plugins

Page 1: WPtech: L'API Customizer pour les plugins

L'API CUSTOMIZERPOUR LES PLUGINS

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 2: WPtech: L'API Customizer pour les plugins

REMICORSON

AUTOMATTIC / WOOTHEMES / WOOCOMMERCE

@REMICORSON - REMICORSON.COM

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 3: WPtech: L'API Customizer pour les plugins

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 4: WPtech: L'API Customizer pour les plugins

L'EMETTEUR ESTTOUJOURS RESPONSABLEDE L'IMCOMPREHENSION

DE SON MESSAGE© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 5: WPtech: L'API Customizer pour les plugins

EXEMPLES© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 6: WPtech: L'API Customizer pour les plugins

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 7: WPtech: L'API Customizer pour les plugins

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 8: WPtech: L'API Customizer pour les plugins

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 9: WPtech: L'API Customizer pour les plugins

PENDANT CE TEMPS...

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 10: WPtech: L'API Customizer pour les plugins

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 11: WPtech: L'API Customizer pour les plugins

ET POUR LES PLUGINS ?

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 12: WPtech: L'API Customizer pour les plugins

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 13: WPtech: L'API Customizer pour les plugins

3 POSSIBILITÉS© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 14: WPtech: L'API Customizer pour les plugins

> 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

Page 15: WPtech: L'API Customizer pour les plugins

DEMO© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 16: WPtech: L'API Customizer pour les plugins

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 17: WPtech: L'API Customizer pour les plugins

8 ETAPES© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 18: WPtech: L'API Customizer pour les plugins

1 - AJOUTER UN BOUTON

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 19: WPtech: L'API Customizer pour les plugins

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 20: WPtech: L'API Customizer pour les plugins

// Ajout d'options aux paramètres existantsadd_action( 'woocommerce_products_general_settings', array( $this, 'product_settings' ) );

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 21: WPtech: L'API Customizer pour les plugins

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

Page 22: WPtech: L'API Customizer pour les plugins

// Ajout d'une action pour notre boutonadd_action( 'woocommerce_admin_field_wc_product_customize_button', array( $this, 'customize_button' ) );

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 23: WPtech: L'API Customizer pour les plugins

// Création du rendu du boutonpublic 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

Page 24: WPtech: L'API Customizer pour les plugins

2 - DÉTERMINER L'URL DU CUSTOMIZER

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 25: WPtech: L'API Customizer pour les plugins

/** * Constructeur */public function __construct() { self::$_this = $this;

$this->_set_customizer_url();

//...}

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 26: WPtech: L'API Customizer pour les plugins

// Définition de l'URL du Customizerprivate 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

Page 27: WPtech: L'API Customizer pour les plugins

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 28: WPtech: L'API Customizer pour les plugins

3 - CRÉER LES OPTIONS DU CUSTOMIZER

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 29: WPtech: L'API Customizer pour les plugins

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

Page 30: WPtech: L'API Customizer pour les plugins

// 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

Page 31: WPtech: L'API Customizer pour les plugins

$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

Page 32: WPtech: L'API Customizer pour les plugins

$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

Page 33: WPtech: L'API Customizer pour les plugins

4 - CHARGER LA PAGE CONCERNÉE

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 34: WPtech: L'API Customizer pour les plugins

// Redirection du customizer sur la page boutiqueadd_action( 'template_redirect', array( $this, 'load_shop_page' ) );

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 35: WPtech: L'API Customizer pour les plugins

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

Page 36: WPtech: L'API Customizer pour les plugins

PETITE PAUSE© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 37: WPtech: L'API Customizer pour les plugins

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 38: WPtech: L'API Customizer pour les plugins

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 39: WPtech: L'API Customizer pour les plugins

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 40: WPtech: L'API Customizer pour les plugins

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 41: WPtech: L'API Customizer pour les plugins

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 42: WPtech: L'API Customizer pour les plugins

5 - AJOUTER UN MARQUEUR

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 43: WPtech: L'API Customizer pour les plugins

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

Page 44: WPtech: L'API Customizer pour les plugins

// Ajout du marqueur dans l'URLadd_filter( 'query_vars', array( $this, 'add_query_vars' ) );

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 45: WPtech: L'API Customizer pour les plugins

public function add_query_vars( $vars ) { $vars[] = $this->_trigger;

return $vars;}

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 46: WPtech: L'API Customizer pour les plugins

6 - FAIRE UN NETTOYAGE DE PRINTEMPS

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 47: WPtech: L'API Customizer pour les plugins

if ( isset( $_GET[ $this->customizer_trigger ] ) ) {

//...

}

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 48: WPtech: L'API Customizer pour les plugins

// Suppression des options du thèmeadd_filter( 'customize_register', array( $this, 'remove_sections' ), 40 );

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 49: WPtech: L'API Customizer pour les plugins

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

Page 50: WPtech: L'API Customizer pour les plugins

// Supprime les panels non désiréspublic 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

Page 51: WPtech: L'API Customizer pour les plugins

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 52: WPtech: L'API Customizer pour les plugins

7 - AJOUT DE CSS & JS

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 53: WPtech: L'API Customizer pour les plugins

( 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

Page 54: WPtech: L'API Customizer pour les plugins

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

Page 55: WPtech: L'API Customizer pour les plugins

add_filter( 'wp_footer', array( $this, 'add_styles' ) );

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 56: WPtech: L'API Customizer pour les plugins

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

Page 57: WPtech: L'API Customizer pour les plugins

8 - LUSTRER LA BÊTE...

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 58: WPtech: L'API Customizer pour les plugins

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 59: WPtech: L'API Customizer pour les plugins

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 60: WPtech: L'API Customizer pour les plugins

// Afficher uniquement nos optionsif ( 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

Page 61: WPtech: L'API Customizer pour les plugins

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

Page 62: WPtech: L'API Customizer pour les plugins

QUESTIONS ?© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015

Page 63: WPtech: L'API Customizer pour les plugins

RDV À 14H00AVEC JULIEN OGER & PIERRE DARGHAM

" PENSEZ WEB-PERFORMANCE AVEC WORDPRESS "

© REMI CORSON 2015 - WPtech Nantes 5 Déc. 2015