WordPress.org

Make WordPress Core

Ticket #19411: 19411.3.diff

File 19411.3.diff, 2.4 KB (added by nacin, 6 years ago)

Alternative also wraps shortcode_unautop(). Not sure if shortcode_unautop() can/should run without wpautop() in the picture.

  • wp-includes/default-filters.php

     
    194194add_filter( 'pings_open',               '_close_comments_for_old_post', 10, 2 );
    195195add_filter( 'editable_slug',            'urldecode'                           );
    196196add_filter( 'nav_menu_meta_box_object', '_wp_nav_menu_meta_box_object'        );
    197 add_filter( 'widget_text',              'shortcode_unautop'                   );
     197add_filter( 'widget_text',        array( 'WP_Widget_Text', 'wpautop' ), 10, 2 ); // dependent on the widget setting
    198198add_filter( 'widget_text',              'do_shortcode'                        );
    199199
    200200// Actions
  • wp-includes/default-widgets.php

     
    374374        }
    375375
    376376        function widget( $args, $instance ) {
    377                 extract($args);
     377                extract( $args );
    378378                $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base );
    379                 $text = apply_filters( 'widget_text', empty( $instance['text'] ) ? '' : $instance['text'], $instance );
     379                $text  = apply_filters( 'widget_text',  empty( $instance['text'] )  ? '' : $instance['text'],  $instance, $this->id_base );
    380380                echo $before_widget;
    381                 if ( !empty( $title ) ) { echo $before_title . $title . $after_title; } ?>
    382                         <div class="textwidget"><?php echo !empty( $instance['filter'] ) ? wpautop( $text ) : $text; ?></div>
     381                if ( ! empty( $title ) ) { echo $before_title . $title . $after_title; } ?>
     382                        <div class="textwidget"><?php echo $text; ?></div>
    383383                <?php
    384384                echo $after_widget;
    385385        }
     
    408408                <p><input id="<?php echo $this->get_field_id('filter'); ?>" name="<?php echo $this->get_field_name('filter'); ?>" type="checkbox" <?php checked(isset($instance['filter']) ? $instance['filter'] : 0); ?> />&nbsp;<label for="<?php echo $this->get_field_id('filter'); ?>"><?php _e('Automatically add paragraphs'); ?></label></p>
    409409<?php
    410410        }
     411
     412        static function wpautop( $text, $instance ) {
     413                if ( ! empty( $instance['filter'] ) ) {
     414                        $text = wpautop( $text );
     415                        if ( has_filter( 'widget_text', 'do_shortcode' ) )
     416                                $text = shortcode_unautop( $text );
     417                }
     418                return $text;
     419        }
    411420}
    412421
    413422/**