remove <div class=”textwidget”> from text-widget

When you add a text widget to a sidebar in WordPress the widget includes this code

<div class="textwidget">

How do I remove this without editing the core?

Read More

FYI – I think this line is located here:
wp-includes/default-widgets.php (line 383)

Related posts

Leave a Reply

5 comments

  1. OK, attempting to remove the with jQuery is counter intuitive.

    Modifying it via output buffering is inefficient.

    And we shouldn’t edit the actual widget code itself, since this will revert back next time we update WordPress.

    I would suggest either creating your own text widget, or simply extend and modify the existing WordPress widget as follows (put the following code in your functions.php file):

    add_action( 'widgets_init', 'register_my_widgets' );
    
    
    function register_my_widgets() {
        ...
        register_widget( 'My_Text_Widget' );
    }
    
    class My_Text_Widget extends WP_Widget_Text {
        function widget( $args, $instance ) {
            extract($args);
            $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base );
            $text = apply_filters( 'widget_text', empty( $instance['text'] ) ? '' : $instance['text'], $instance );
            echo $before_widget;
            if ( !empty( $title ) ) { echo $before_title . $title . $after_title; } ?>
                <?php echo !empty( $instance['filter'] ) ? wpautop( $text ) : $text; ?>
            <?php
            echo $after_widget;
        }
    }
    
  2. If you’re looking to remove the actual div with the textwidget class applied to it but not it’s content, this is a simple method using jQuery:

    $('.textwidget').replaceWith($('.textwidget').contents());
    
  3. As per the comment, in the case it is probably better to just remove or replace the class name using jQuery then a php function, since that class is hardcoded anyhow.

    To remove it.

    jQuery('.textwidget').remove();
    

    To set the css to hide it.

    jQuery('.textwidget').css('display', 'none');
    

    To change the class name

    jQuery('.textwidget').attr('class', 'newName');
    
  4. You can use output buffering (http://php.net/manual/es/book.outcontrol.php) to get the whole generated page in a variable and remove the offending before echoing.

    But it seems overly complicated for this case. You can just copy all the widget code and create a new widget (in a plugin or your functions.php) without that hardcoded div. It’s really not that much code.

    Also, any reason to remove that div that can not be solved in css?