Onglet de réglages WooCommerce
Voici une classe PHP vous permettant d’ajouter une page de réglages dans l’administration de WooCommerce, ainsi que d’utiliser l’API de formulaire et d’enregistrement.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
class WC_Settings_Tab_Kodex { const TEXT_DOMAIN = 'kodex'; // text-domain pour les traductions const SETTING_TAB = 'settings_kodex'; // identifiant : url, nom des options, hooks public static function hooks(){ add_filter('woocommerce_settings_tabs_array', array(__CLASS__, 'add_settings_tab'), 50); add_action('woocommerce_settings_tabs_'.self::SETTING_TAB, array(__CLASS__, 'display_settings')); add_action('woocommerce_update_options_'.self::SETTING_TAB, array(__CLASS__, 'update_settings')); } // Déclaration de l'onglet public static function add_settings_tab($settings_tabs){ $settings_tabs[self::SETTING_TAB] = "Kodex"; return $settings_tabs; } // Déclaration des champs public static function display_settings(){ woocommerce_admin_fields( self::get_settings() ); } // enregistrement des champs public static function update_settings(){ $settings = self::get_settings(); unset($settings['section_title']); unset($settings['section_end']); woocommerce_update_options( $settings ); } // Définition des champs // @see woocommerce_admin_fields( public static function get_settings(){ $settings = array( 'section_title' => array( 'name' => __("Options Kodex", self::TEXT_DOMAIN), 'type' => 'title', 'desc' => '', ), 'title' => array( 'name' => __("Titre", self::TEXT_DOMAIN), 'type' => 'text', 'desc' => "", ), 'description' => array( 'name' => __("Description", self::TEXT_DOMAIN), 'type' => 'textarea', 'desc' => "", ), 'countries' => array( 'name' => __("Pays", self::TEXT_DOMAIN), 'type' => 'multiselect', 'options' => WC()->countries->get_countries(), 'class' => 'wc-enhanced-select', 'desc' => "" ), 'section_end' => array( 'type' => 'sectionend', ) ); foreach($settings as $k=>$v){ $settings[$k]['id'] = 'wc_'.self::SETTING_TAB.'_'.$k; } return apply_filters('wc_'.self::SETTING_TAB.'_settings', $settings); } // Obtenir la valeur d'une option // Usage : $title = WC_Settings_Tab_Kodex::get_setting('title'); public static function get_setting($name){ return get_option('wc_'.self::SETTING_TAB.'_'.$name); } } WC_Settings_Tab_Kodex::hooks(); |