3

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

  • Nobody would have an idea? I feel lonely :( – oblik Apr 23 '12 at 13:54
2

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' );

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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