Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I would like to add a default select box to all widgets placed in the sidebars of my site. This would allow to choose the color of the associated widget. Do you know how i can make this ? I know how to make a custom widget. Thank you

share|improve this question
    
Nobody would have an idea? I feel lonely :( –  oblik Apr 23 '12 at 13:54

1 Answer 1

up vote 2 down vote accepted

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="/', "class=\"{$widget_opt[$widget_num]['classes']} ", $params[0]['before_widget'], 1 ); return $params; } add_filter( 'dynamic_sidebar_params', 'kc_dynamic_sidebar_params' );

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.