WordPress.org

Make WordPress Core

Ticket #10976: 10976.widget-content.diff

File 10976.widget-content.diff, 11.2 KB (added by lancewillett, 8 years ago)

Patch to add before_content and after_content to default widgets

  • wp-includes/default-widgets.php

     
    3535                        echo $before_widget;
    3636                        if ( $title)
    3737                                echo $before_title . $title . $after_title;
     38                        echo $before_content;
    3839                ?>
    3940                <ul>
    4041                        <?php echo $out; ?>
    4142                </ul>
    4243                <?php
     44                        echo $after_content;
    4345                        echo $after_widget;
    4446                }
    4547        }
     
    104106                $show_images = isset($instance['images']) ? $instance['images'] : true;
    105107                $category = isset($instance['category']) ? $instance['category'] : false;
    106108
     109                $link_args = array(
     110                        'title_before' => $before_title,
     111                        'title_after' => $after_title . $before_content,
     112                        'category_before' => $before_widget,
     113                        'category_after' => $after_widget,
     114                        'show_images' => $show_images,
     115                        'show_description' => $show_description,
     116                        'show_name' => $show_name,
     117                        'show_rating' => $show_rating,
     118                        'category' => $category,
     119                        'class' => 'linkcat widget'
     120                );
     121
    107122                if ( is_admin() && !$category ) {
    108123                        // Display All Links widget as such in the widgets screen
    109124                        echo $before_widget . $before_title. __('All Links') . $after_title . $after_widget;
     
    111126                }
    112127
    113128                $before_widget = preg_replace('/id="[^"]*"/','id="%id"', $before_widget);
    114                 wp_list_bookmarks(apply_filters('widget_links_args', array(
    115                         'title_before' => $before_title, 'title_after' => $after_title,
    116                         'category_before' => $before_widget, 'category_after' => $after_widget,
    117                         'show_images' => $show_images, 'show_description' => $show_description,
    118                         'show_name' => $show_name, 'show_rating' => $show_rating,
    119                         'category' => $category, 'class' => 'linkcat widget'
    120                 )));
     129
     130                echo $before_widget;
     131
     132                wp_list_bookmarks( apply_filters( 'widget_links_args', $link_args ) );
     133
     134                echo $after_content;
     135
     136                echo $after_widget;
    121137        }
    122138
    123139        function update( $new_instance, $old_instance ) {
    124140                $new_instance = (array) $new_instance;
    125                 $instance = array( 'images' => 0, 'name' => 0, 'description' => 0, 'rating' => 0);
     141                $instance = array( 'images' => 0, 'name' => 0, 'description' => 0, 'rating' => 0 );
    126142                foreach ( $instance as $field => $val ) {
    127143                        if ( isset($new_instance[$field]) )
    128144                                $instance[$field] = 1;
     
    184200                if ( $title )
    185201                        echo $before_title . $title . $after_title;
    186202
    187                 // Use current theme search form if it exists
    188                 get_search_form();
     203                echo $before_content;
     204                get_search_form(); // Use current theme search form if it exists
     205                echo $after_content;
    189206
    190207                echo $after_widget;
    191208        }
     
    229246                if ( $title )
    230247                        echo $before_title . $title . $after_title;
    231248
     249                echo $before_content;
    232250                if ( $d ) {
    233251?>
    234252                <select name="archive-dropdown" onchange='document.location.href=this.options[this.selectedIndex].value;'> <option value=""><?php echo esc_attr(__('Select Month')); ?></option> <?php wp_get_archives(apply_filters('widget_archives_dropdown_args', array('type' => 'monthly', 'format' => 'option', 'show_post_count' => $c))); ?> </select>
     
    240258                </ul>
    241259<?php
    242260                }
     261                echo $after_content;
    243262
    244263                echo $after_widget;
    245264        }
     
    291310                echo $before_widget;
    292311                if ( $title )
    293312                        echo $before_title . $title . $after_title;
     313                       
     314                        echo $before_content;
    294315?>
    295316                        <ul>
    296317                        <?php wp_register(); ?>
     
    301322                        <?php wp_meta(); ?>
    302323                        </ul>
    303324<?php
     325                echo $after_content;
     326
    304327                echo $after_widget;
    305328        }
    306329
     
    335358        function widget( $args, $instance ) {
    336359                extract($args);
    337360                $title = apply_filters('widget_title', empty($instance['title']) ? '&nbsp;' : $instance['title'], $instance, $this->id_base);
     361
    338362                echo $before_widget;
     363
    339364                if ( $title )
    340365                        echo $before_title . $title . $after_title;
    341                 echo '<div id="calendar_wrap">';
     366
     367                if ( '' != $before_content )
     368                        echo $before_content;
     369                else
     370                        echo '<div id="calendar_wrap">';
     371
    342372                get_calendar();
    343                 echo '</div>';
     373
     374                if ( '' != $after_content )
     375                        echo $after_content;
     376                else
     377                        echo '</div>';
     378
    344379                echo $after_widget;
    345380        }
    346381
     
    378413                extract($args);
    379414                $title = apply_filters( 'widget_title', empty($instance['title']) ? '' : $instance['title'], $instance, $this->id_base);
    380415                $text = apply_filters( 'widget_text', $instance['text'], $instance );
     416
    381417                echo $before_widget;
    382                 if ( !empty( $title ) ) { echo $before_title . $title . $after_title; } ?>
    383                         <div class="textwidget"><?php echo $instance['filter'] ? wpautop($text) : $text; ?></div>
    384                 <?php
     418
     419                if ( !empty( $title ) )
     420                        echo $before_title . $title . $after_title;
     421
     422                if ( '' != $before_content )
     423                        echo $before_content;
     424                else
     425                        echo '<div class="textwidget">';
     426
     427                echo $instance['filter'] ? wpautop( $text ) : $text;
     428
     429                if ( '' != $after_content )
     430                        echo $after_content;
     431                else
     432                        echo '</div>';
     433
    385434                echo $after_widget;
    386435        }
    387436
     
    432481                $d = $instance['dropdown'] ? '1' : '0';
    433482
    434483                echo $before_widget;
     484
    435485                if ( $title )
    436486                        echo $before_title . $title . $after_title;
    437487
    438                 $cat_args = array('orderby' => 'name', 'show_count' => $c, 'hierarchical' => $h);
     488                echo $before_content;
    439489
     490                $cat_args = array( 'orderby' => 'name', 'show_count' => $c, 'hierarchical' => $h );
     491
    440492                if ( $d ) {
    441493                        $cat_args['show_option_none'] = __('Select Category');
    442494                        wp_dropdown_categories(apply_filters('widget_categories_dropdown_args', $cat_args));
     
    460512                <ul>
    461513<?php
    462514                $cat_args['title_li'] = '';
    463                 wp_list_categories(apply_filters('widget_categories_args', $cat_args));
     515                wp_list_categories( apply_filters( 'widget_categories_args', $cat_args ) );
    464516?>
    465517                </ul>
    466518<?php
    467519                }
    468520
     521                echo $after_content;
     522
    469523                echo $after_widget;
    470524        }
    471525
     
    547601?>
    548602                <?php echo $before_widget; ?>
    549603                <?php if ( $title ) echo $before_title . $title . $after_title; ?>
     604                <?php echo $before_content; ?>
    550605                <ul>
    551606                <?php  while ($r->have_posts()) : $r->the_post(); ?>
    552                 <li><a href="<?php the_permalink() ?>" title="<?php echo esc_attr(get_the_title() ? get_the_title() : get_the_ID()); ?>"><?php if ( get_the_title() ) the_title(); else the_ID(); ?></a></li>
     607                        <li><a href="<?php the_permalink() ?>" title="<?php echo esc_attr(get_the_title() ? get_the_title() : get_the_ID()); ?>"><?php if ( get_the_title() ) the_title(); else the_ID(); ?></a></li>
    553608                <?php endwhile; ?>
    554609                </ul>
     610                <?php echo $after_content; ?>
    555611                <?php echo $after_widget; ?>
    556612<?php
    557613                // Reset the global $the_post as this query will have stomped on it
     
    649705                if ( $title )
    650706                        $output .= $before_title . $title . $after_title;
    651707
     708                $output .= $before_content;
    652709                $output .= '<ul id="recentcomments">';
    653710                if ( $comments ) {
    654711                        foreach ( (array) $comments as $comment) {
     
    656713                        }
    657714                }
    658715                $output .= '</ul>';
     716                $output .= $after_content;
    659717                $output .= $after_widget;
    660718
    661719                echo $output;
     
    742800                echo $before_widget;
    743801                if ( $title )
    744802                        echo $before_title . $title . $after_title;
     803                echo $before_content;
    745804                wp_widget_rss_output( $rss, $instance );
     805                echo $after_content;
    746806                echo $after_widget;
    747807
    748808                if ( ! is_wp_error($rss) )
     
    10091069                $title = apply_filters('widget_title', $title, $instance, $this->id_base);
    10101070
    10111071                echo $before_widget;
     1072
    10121073                if ( $title )
    10131074                        echo $before_title . $title . $after_title;
    1014                 echo '<div>';
     1075
     1076                if ( '' != $before_content )
     1077                        echo $before_content;
     1078                else
     1079                        echo '<div>';
     1080
    10151081                wp_tag_cloud( apply_filters('widget_tag_cloud_args', array('taxonomy' => $current_taxonomy) ) );
    1016                 echo "</div>\n";
     1082
     1083                if ( '' != $after_content )
     1084                        echo $after_content;
     1085                else
     1086                        echo "</div>\n";
     1087
    10171088                echo $after_widget;
    10181089        }
    10191090
     
    10531124 *
    10541125 * @since 3.0.0
    10551126 */
    1056  class WP_Nav_Menu_Widget extends WP_Widget {
     1127class WP_Nav_Menu_Widget extends WP_Widget {
    10571128
    10581129        function WP_Nav_Menu_Widget() {
    10591130                $widget_ops = array( 'description' => __('Use this widget to add one of your custom menus as a widget.') );
     
    10741145                if ( !empty($instance['title']) )
    10751146                        echo $args['before_title'] . $instance['title'] . $args['after_title'];
    10761147
     1148                echo $args['before_content'];
     1149
    10771150                wp_nav_menu( array( 'fallback_cb' => '', 'menu' => $nav_menu ) );
    10781151
     1152                echo $args['after_content'];
     1153
    10791154                echo $args['after_widget'];
    10801155        }
    10811156
  • wp-includes/widgets.php

     
    3838         *
    3939         * Subclasses should over-ride this function to generate their widget code.
    4040         *
    41          * @param array $args Display arguments including before_title, after_title, before_widget, and after_widget.
     41         * @param array $args Display arguments including before_title, after_title, before_widget, after_widget, before_content, and after_content.
    4242         * @param array $instance The settings for the particular instance of the widget
    4343         */
    4444        function widget($args, $instance) {
     
    528528 *     displayed.
    529529 * before_title - The content that will be prepended to the title when displayed.
    530530 * after_title - the content that will be appended to the title when displayed.
     531 * before_content - The content that will be prepended to the widget content when displayed.
     532 * after_content - the content that will be appended to the widget content when displayed.
    531533 *
    532534 * <em>Content</em> is assumed to be HTML and should be formatted as such, but
    533535 * doesn't have to be.
     
    551553                'after_widget' => "</li>\n",
    552554                'before_title' => '<h2 class="widgettitle">',
    553555                'after_title' => "</h2>\n",
     556                'before_content' => '',
     557                'after_content' => '',
    554558        );
    555559
    556560        $sidebar = wp_parse_args( $args, $defaults );
     
    11951199        if ( !is_a($widget_obj, 'WP_Widget') )
    11961200                return;
    11971201
    1198         $before_widget = sprintf('<div class="widget %s">', $widget_obj->widget_options['classname']);
    1199         $default_args = array('before_widget' => $before_widget, 'after_widget' => "</div>", 'before_title' => '<h2 class="widgettitle">', 'after_title' => '</h2>');
     1202        $before_widget = sprintf( '<div class="widget %s">', $widget_obj->widget_options['classname'] );
     1203        $default_args = array(
     1204                'before_widget' => $before_widget,
     1205                'after_widget' => "</div>",
     1206                'before_title' => '<h2 class="widgettitle">',
     1207                'after_title' => '</h2>',
     1208                'before_content' => '',
     1209                'after_content' => ''
     1210        );
    12001211
    12011212        $args = wp_parse_args($args, $default_args);
    12021213        $instance = wp_parse_args($instance);
  • wp-content/themes/twentyten/functions.php

     
    358358                'after_widget' => '</li>',
    359359                'before_title' => '<h3 class="widget-title">',
    360360                'after_title' => '</h3>',
     361                'before_content' => '<div class="textwidget lance debug" style="border: 1px solid red;">',
     362                'after_content' => '</div>',
    361363        ) );
    362364
    363365        // Area 2, located below the Primary Widget Area in the sidebar. Empty by default.
     
    480482                the_title_attribute( 'echo=0' )
    481483        );
    482484}
    483 endif;
     485endif;
     486 No newline at end of file
  • wp-admin/widgets.php

     
    5555        'after_widget' => '',
    5656        'before_title' => '',
    5757        'after_title' => '',
     58        'before_content' => '',
     59        'after_content' => '',
    5860));
    5961
    6062// These are the widgets grouped by sidebar