Thanks to Ed Nailor & Kucrut !
http://ednailor.com/2011/01/24/adding-custom-css-classes-to-sidebar-widgets/
// __________________________________________________________ // // CUSTOM CLASS BY WIDGETS function kc_widget_form_extend( $instance, $widget ) { if ( !isset($instance['classes']) ) $instance['classes'] = null; /* Set your predetermied class choices here */ $myarray = "class1,class2,class3"; $myclasses = explode(",",$myarray); $row = "\n"; $row .= "\tid_base}-{$widget->number}-classes'>Class:\n"; $row .= "\tid_base}[{$widget->number}][classes]' id='widget-{$widget->id_base}-{$widget->number}-classes' class="widefat">\n"; foreach($myclasses as $myclass) { $instance_selected = null; if($instance['classes']==$myclass) $instance_selected = " selected='selected'"; $row .= "\t".$myclass."\n"; } $row .= "\n"; echo $row; return $instance; } add_filter('widget_form_callback', 'kc_widget_form_extend', 10, 2);function kc_widget_update( $instance, $new_instance ) { $instance['classes'] = $new_instance['classes']; return $instance; } add_filter( 'widget_update_callback', 'kc_widget_update', 10, 2 ); function kc_dynamic_sidebar_params( $params ) { global $wp_registered_widgets; $widget_id = $params[0]['widget_id']; $widget_obj = $wp_registered_widgets[$widget_id]; $widget_opt = get_option($widget_obj['callback'][0]->option_name); $widget_num = $widget_obj['params'][0]['number']; if ( isset($widget_opt[$widget_num]['classes']) && !empty($widget_opt[$widget_num]['classes']) ) $params[0]['before_widget'] = preg_replace( '/class="https://wordpress.stackexchange.com/", "class=\"{$widget_opt[$widget_num]['classes']} ", $params[0]['before_widget'], 1 ); return $params; } add_filter( 'dynamic_sidebar_params', 'kc_dynamic_sidebar_params' );