Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • #1403147

    There are some plugins for that – but if you do not like to have another plugin to install you can insert this to child-theme functions.php:

    function avia_widget_form_extension( $instance, $widget ) {
    if ( !isset($instance['classes']) )
            $instance['classes'] = null;   
            $row .= "Class:\t<input type='text' name='widget-{$widget->id_base}[{$widget->number}][classes]' id='widget-{$widget->id_base}-{$widget->number}-classes' class='widefat' value='{$instance['classes']}'/>\n";
            $row .= "</p>\n";    
            echo $row;
        return $instance;
    }
    add_filter('widget_form_callback', 'avia_widget_form_extension', 10, 2);
    
    function avia_widget_update( $instance, $new_instance ) {
        $instance['classes'] = $new_instance['classes'];
    	return $instance;
    }
    add_filter( 'widget_update_callback', 'avia_widget_update', 10, 2 );
    
    function avia_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', 'avia_dynamic_sidebar_params' );
    

    you will have on top then an input field for custom-class

    #1403200

    Hey Guenter,

    Thanks for sharing your code, it’s much appreciated as usual :-)

    Best regards,
    Rikard

Viewing 2 posts - 1 through 2 (of 2 total)
  • You must be logged in to reply to this topic.