Ticket #11387: walker_widget.2.patch
File walker_widget.2.patch, 38.8 KB (added by , 15 years ago) |
---|
-
wp-content/themes/classic/functions.php
7 7 automatic_feed_links(); 8 8 9 9 if ( function_exists('register_sidebar') ) 10 register_sidebar(array( 11 'before_widget' => '<li id="%1$s" class="widget %2$s">', 12 'after_widget' => '</li>', 13 'before_title' => '', 14 'after_title' => '', 15 )); 10 register_sidebar(); 16 11 17 12 ?> -
wp-content/themes/default/functions.php
9 9 automatic_feed_links(); 10 10 11 11 if ( function_exists('register_sidebar') ) { 12 register_sidebar(array( 13 'before_widget' => '<li id="%1$s" class="widget %2$s">', 14 'after_widget' => '</li>', 15 'before_title' => '<h2 class="widgettitle">', 16 'after_title' => '</h2>', 17 )); 12 register_sidebar(); 18 13 } 19 14 20 15 /** @ignore */ -
wp-includes/bookmark-template.php
251 251 echo $output; 252 252 } 253 253 254 /** 255 * 256 * @param $args 257 * @return unknown_type 258 */ 259 function wp_list_bookmarks_widget($args = '') { 260 $defaults = array( 261 'orderby' => 'name', 'order' => 'ASC', 262 'limit' => -1, 'category' => '', 'exclude_category' => '', 263 'category_name' => '', 'hide_invisible' => 1, 264 'show_updated' => 0, 'echo' => 1, 265 'categorize' => 1, 'title_li' => __('Bookmarks'), 266 'title_before' => '<h2>', 'title_after' => '</h2>', 267 'category_orderby' => 'name', 'category_order' => 'ASC', 268 'class' => 'linkcat', 'category_before' => '<li id="%id" class="%class">', 269 'category_after' => '</li>' 270 ); 271 272 $r = wp_parse_args( $args, $defaults ); 273 extract( $r, EXTR_SKIP ); 274 275 $output = ''; 276 277 if ( $categorize ) { 278 $cats = get_terms('link_category', array('name__like' => $category_name, 'include' => $category, 'exclude' => $exclude_category, 'orderby' => $category_orderby, 'order' => $category_order, 'hierarchical' => 0)); 279 280 foreach ( (array) $cats as $cat ) { 281 $params = array_merge($r, array('category' => $cat->term_id)); 282 $bookmarks = get_bookmarks($params); 283 if ( empty($bookmarks) ) 284 continue; 285 286 $bookmarks_output[] = array( 287 'title' => apply_filters( "link_category", $cat->name ), 288 'output' => _walk_bookmarks($bookmarks, $r) 289 ); 290 291 } 292 293 } else { 294 $bookmarks = get_bookmarks($r); 295 if ( !empty($bookmarks) ) { 296 $bookmarks_output[] = array( 297 'title' => apply_filters( "link_category", $cat->name ), 298 'output' => _walk_bookmarks($bookmarks, $r) 299 ); 300 } 301 } 302 303 return $bookmarks_output; 304 } 305 254 306 ?> -
wp-includes/default-widgets.php
24 24 25 25 $title = apply_filters('widget_title', empty( $instance['title'] ) ? __( 'Pages' ) : $instance['title']); 26 26 $sortby = empty( $instance['sortby'] ) ? 'menu_order' : $instance['sortby']; 27 $walker = empty( $instance['walker'] ) ? '' : $instance['walker']; 27 28 $exclude = empty( $instance['exclude'] ) ? '' : $instance['exclude']; 28 29 29 30 if ( $sortby == 'menu_order' ) 30 31 $sortby = 'menu_order, post_title'; 31 32 $out = wp_list_pages( apply_filters('widget_pages_args', array('title_li' => '', 'echo' => 0, 'sort_column' => $sortby, 'exclude' => $exclude) ) ); 33 34 if ( !empty( $out ) ) { 35 echo $before_widget; 36 if ( $title) 37 echo $before_title . $title . $after_title; 38 ?> 39 <ul> 40 <?php echo $out; ?> 41 </ul> 42 <?php 43 echo $after_widget; 44 } 32 33 if ( !empty( $walker ) ) 34 $page_walker = new $walker; 35 36 $pages_array = array('title_li' => '', 'echo' => 0, 'sort_column' => $sortby, 'exclude' => $exclude, 'walker' => $page_walker); 37 $output = wp_list_pages( apply_filters('widget_pages_args', $pages_array ) ); 38 39 $widget_design = apply_filters( 'widget_design', new Widget_Basic, $args); 40 $widget_array = array( 41 'title' => apply_filters('widget_title', $title, $args), 42 'before_output' => "<ul>", 43 'output' => $output, 44 'after_output' => "</ul>", 45 'style' => "li" 46 ); 47 $widget_args = array(array_merge($args, $widget_array)); 48 49 echo call_user_func_array( array(&$widget_design, 'display'), $widget_args ); 50 45 51 } 46 52 47 53 function update( $new_instance, $old_instance ) { … … 52 58 } else { 53 59 $instance['sortby'] = 'menu_order'; 54 60 } 55 61 62 $instance['walker'] = strip_tags( $new_instance['walker'] ); 56 63 $instance['exclude'] = strip_tags( $new_instance['exclude'] ); 57 64 58 65 return $instance; … … 60 67 61 68 function form( $instance ) { 62 69 //Defaults 63 $instance = wp_parse_args( (array) $instance, array( 'sortby' => 'post_title', 'title' => '', ' exclude' => '') );70 $instance = wp_parse_args( (array) $instance, array( 'sortby' => 'post_title', 'title' => '', 'walker' => '', 'exclude' => '') ); 64 71 $title = esc_attr( $instance['title'] ); 72 $walker = esc_attr( $instance['walker'] ); 65 73 $exclude = esc_attr( $instance['exclude'] ); 66 74 ?> 67 75 <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label> <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" /></p> … … 74 82 </select> 75 83 </p> 76 84 <p> 85 <label for="<?php echo $this->get_field_id('walker'); ?>"><?php _e( 'Walker:' ); ?></label> <input type="text" value="<?php echo $walker; ?>" name="<?php echo $this->get_field_name('walker'); ?>" id="<?php echo $this->get_field_id('walker'); ?>" class="widefat" /> 86 <br /> 87 <small><?php _e( 'Customer Walker' ); ?></small> 77 88 <label for="<?php echo $this->get_field_id('exclude'); ?>"><?php _e( 'Exclude:' ); ?></label> <input type="text" value="<?php echo $exclude; ?>" name="<?php echo $this->get_field_name('exclude'); ?>" id="<?php echo $this->get_field_id('exclude'); ?>" class="widefat" /> 78 89 <br /> 79 90 <small><?php _e( 'Page IDs, separated by commas.' ); ?></small> … … 109 120 echo $before_widget . $before_title. __('All Links') . $after_title . $after_widget; 110 121 return; 111 122 } 112 113 $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, 123 124 $links_data = wp_list_bookmarks_widget(apply_filters('widget_links_args', array( 125 'title_before' => '', 'title_after' => '', 'category_before' => '', 'category_after' => '', 117 126 'show_images' => $show_images, 'show_description' => $show_description, 118 127 'show_name' => $show_name, 'show_rating' => $show_rating, 119 128 'category' => $category, 'class' => 'linkcat widget' 120 129 ))); 130 $widget_design = apply_filters( 'widget_design', new Widget_Basic, $args); 131 $widget_default_array = array('style' => 'li', 'before_output' => '<ul class="xoxo blogroll">', 'after_output' => '</ul>'); 132 133 foreach ($links_data as $links) { 134 $widget_array[] = array_merge($links, $widget_default_array); 135 } 136 137 foreach ($widget_array as $widget_display) { 138 echo call_user_func_array( array(&$widget_design, 'display'), array(array_merge($args, $widget_display)) ); 139 } 140 121 141 } 122 142 123 143 function update( $new_instance, $old_instance ) { … … 178 198 179 199 function widget( $args, $instance ) { 180 200 extract($args); 181 $title = apply_filters( 'widget_title', $instance['title']);201 $title = apply_filters( 'widget_title', $instance['title'], $args); 182 202 183 echo $before_widget; 184 if ( $title ) 185 echo $before_title . $title . $after_title; 203 $widget_design = apply_filters( 'widget_design', new Widget_Search, $args); 204 $widget_array = array( 205 'title' => $title, 206 'output' => get_search_form(false), 207 'style' => "none" 208 ); 209 $widget_args = array(array_merge($args, $widget_array)); 210 211 echo call_user_func_array( array(&$widget_design, 'display'), $widget_args ); 186 212 187 // Use current theme search form if it exists188 get_search_form();189 190 echo $after_widget;191 213 } 192 214 193 215 function form( $instance ) { … … 213 235 * @since 2.8.0 214 236 */ 215 237 class WP_Widget_Archives extends WP_Widget { 216 238 239 // @todo Add other options, day(s), month, 240 217 241 function WP_Widget_Archives() { 218 242 $widget_ops = array('classname' => 'widget_archive', 'description' => __( 'A monthly archive of your blog’s posts') ); 219 243 $this->WP_Widget('archives', __('Archives'), $widget_ops); … … 223 247 extract($args); 224 248 $c = $instance['count'] ? '1' : '0'; 225 249 $d = $instance['dropdown'] ? '1' : '0'; 226 $title = apply_filters('widget_title', empty($instance['title']) ? __('Archives') : $instance['title']); 227 228 echo $before_widget; 229 if ( $title ) 230 echo $before_title . $title . $after_title; 231 250 $title = apply_filters('widget_title', empty($instance['title']) ? __('Archives') : $instance['title'], $args); 251 232 252 if ( $d ) { 233 ?> 234 <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> 235 <?php 253 $output = "<select name=\"archive-dropdown\" onchange='document.location.href=this.options[this.selectedIndex].value;'> <option value=\"\">". esc_attr(__('Select Month')) . "</option>" . wp_get_archives(apply_filters('widget_archives_dropdown_args', array('echo' => 0, 'type' => 'monthly', 'format' => 'option', 'show_post_count' => $c))) . "</select>"; 236 254 } else { 237 ?> 238 <ul> 239 <?php wp_get_archives(apply_filters('widget_archives_args', array('type' => 'monthly', 'show_post_count' => $c))); ?> 240 </ul> 241 <?php 255 $output = wp_get_archives(apply_filters('widget_archives_args', array('echo' => 0, 'type' => 'monthly', 'show_post_count' => $c))); 242 256 } 243 244 echo $after_widget; 257 258 $widget_design = apply_filters( 'widget_design', new Widget_Basic, $args); 259 $widget_array = array( 260 'title' => $title, 261 'before_output' => "<ul>", 262 'output' => $output, 263 'after_output' => "</ul>", 264 'style' => "li" 265 ); 266 $widget_args = array(array_merge($args, $widget_array)); 267 268 echo call_user_func_array( array(&$widget_design, 'display'), $widget_args ); 269 245 270 } 246 271 247 272 function update( $new_instance, $old_instance ) { … … 286 311 287 312 function widget( $args, $instance ) { 288 313 extract($args); 289 $title = apply_filters('widget_title', empty($instance['title']) ? __('Meta') : $instance['title']); 290 291 echo $before_widget; 292 if ( $title ) 293 echo $before_title . $title . $after_title; 294 ?> 295 <ul> 296 <?php wp_register(); ?> 297 <li><?php wp_loginout(); ?></li> 298 <li><a href="<?php bloginfo('rss2_url'); ?>" title="<?php echo esc_attr(__('Syndicate this site using RSS 2.0')); ?>"><?php _e('Entries <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li> 299 <li><a href="<?php bloginfo('comments_rss2_url'); ?>" title="<?php echo esc_attr(__('The latest comments to all posts in RSS')); ?>"><?php _e('Comments <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li> 300 <li><a href="http://wordpress.org/" title="<?php echo esc_attr(__('Powered by WordPress, state-of-the-art semantic personal publishing platform.')); ?>">WordPress.org</a></li> 301 <?php wp_meta(); ?> 302 </ul> 303 <?php 304 echo $after_widget; 314 $title = apply_filters('widget_title', empty($instance['title']) ? __('Meta') : $instance['title'], $args); 315 316 $widget_design = apply_filters( 'widget_design', new Widget_Basic, $args); 317 $widget_array = array( 318 'title' => $title, 319 'before_output' => "<ul>", 320 'output' => "<li>" . wp_register('', '', false) . "</li><li>" . wp_loginout('', false) . "</li><li><a href='". get_bloginfo('rss2_url') . "' title='". __('Syndicate this site using RSS 2.0') . "'>" . __('Entries <abbr title="Really Simple Syndication">RSS</abbr>') . "</a></li><li><a href='" . get_bloginfo('comments_rss2_url') . "' title='" . __('The latest comments to all posts in RSS') . "'>" . __('Comments <abbr title="Really Simple Syndication">RSS</abbr>') . "</a></li><li><a href='http://wordpress.org/' title='" . __('Powered by WordPress, state-of-the-art semantic personal publishing platform.') . "'>WordPress.org</a></li>" . wp_meta(), 321 'after_output' => "</ul>", 322 ); 323 $widget_args = array(array_merge($args, $widget_array)); 324 325 echo call_user_func_array( array(&$widget_design, 'display'), $widget_args ); 326 305 327 } 306 328 307 329 function update( $new_instance, $old_instance ) { … … 334 356 335 357 function widget( $args, $instance ) { 336 358 extract($args); 337 $title = apply_filters('widget_title', empty($instance['title']) ? ' ' : $instance['title']); 338 echo $before_widget; 339 if ( $title ) 340 echo $before_title . $title . $after_title; 341 echo '<div id="calendar_wrap">'; 342 get_calendar(); 343 echo '</div>'; 344 echo $after_widget; 359 $title = apply_filters('widget_title', empty($instance['title']) ? __('Calendar') : $instance['title'], $args); 360 361 $widget_design = apply_filters( 'widget_design', new Widget_Basic, $args); 362 $widget_array = array( 363 'title' => $title, 364 'before_output' => "<div id='calendar_wrap'>", 365 'output' => get_calendar(true, false), 366 'after_output' => "</div>", 367 'style' => "none" 368 ); 369 $widget_args = array(array_merge($args, $widget_array)); 370 371 echo call_user_func_array( array(&$widget_design, 'display'), $widget_args ); 372 345 373 } 346 374 347 375 function update( $new_instance, $old_instance ) { … … 378 406 extract($args); 379 407 $title = apply_filters( 'widget_title', empty($instance['title']) ? '' : $instance['title'], $instance ); 380 408 $text = apply_filters( 'widget_text', $instance['text'], $instance ); 381 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 385 echo $after_widget; 409 410 $widget_design = apply_filters( 'widget_design', new Widget_Basic, $args); 411 $widget_array = array( 412 'title' => $title, 413 'before_output' => "<div class='textwidget'>", 414 'output' => $instance['filter'] ? wpautop($text) : $text, 415 'after_output' => "</div>", 416 'style' => "none" 417 ); 418 $widget_args = array(array_merge($args, $widget_array)); 419 420 echo call_user_func_array( array(&$widget_design, 'display'), $widget_args ); 421 386 422 } 387 423 388 424 function update( $new_instance, $old_instance ) { … … 426 462 function widget( $args, $instance ) { 427 463 extract( $args ); 428 464 429 $title = apply_filters('widget_title', empty( $instance['title'] ) ? __( 'Categories' ) : $instance['title'] );465 $title = apply_filters('widget_title', empty( $instance['title'] ) ? __( 'Categories' ) : $instance['title'], $args); 430 466 $c = $instance['count'] ? '1' : '0'; 431 467 $h = $instance['hierarchical'] ? '1' : '0'; 432 468 $d = $instance['dropdown'] ? '1' : '0'; 469 $walker = empty( $instance['walker'] ) ? '' : $instance['walker']; 470 471 if ( !empty( $walker ) ) 472 $cat_walker = new $walker; 473 474 $cat_args = array('echo' => 0, 'orderby' => 'name', 'show_count' => $c, 'hierarchical' => $h, 'walker' => $cat_walker); 433 475 434 echo $before_widget;435 if ( $title )436 echo $before_title . $title . $after_title;437 438 $cat_args = array('orderby' => 'name', 'show_count' => $c, 'hierarchical' => $h);439 440 476 if ( $d ) { 441 477 $cat_args['show_option_none'] = __('Select Category'); 442 wp_dropdown_categories(apply_filters('widget_categories_dropdown_args', $cat_args)); 443 ?> 478 $widget_opt_array = array('style' => "none"); 479 $output .= wp_dropdown_categories(apply_filters('widget_categories_dropdown_args', $cat_args)); 480 $output .= "<script type='text/javascript'> 481 /* <![CDATA[ */ 482 var dropdown = document.getElementById(\"cat\"); 483 function onCatChange() { 484 if ( dropdown.options[dropdown.selectedIndex].value > 0 ) { 485 location.href = \"" . get_option('home') . "/?cat=\"+dropdown.options[dropdown.selectedIndex].value; 486 } 487 } 488 dropdown.onchange = onCatChange; 489 /* ]]> */ 490 </script>"; 444 491 445 <script type='text/javascript'>446 /* <![CDATA[ */447 var dropdown = document.getElementById("cat");448 function onCatChange() {449 if ( dropdown.options[dropdown.selectedIndex].value > 0 ) {450 location.href = "<?php echo get_option('home'); ?>/?cat="+dropdown.options[dropdown.selectedIndex].value;451 }452 }453 dropdown.onchange = onCatChange;454 /* ]]> */455 </script>456 457 <?php458 492 } else { 459 ?> 460 <ul> 461 <?php 462 $cat_args['title_li'] = ''; 463 wp_list_categories(apply_filters('widget_categories_args', $cat_args)); 464 ?> 465 </ul> 466 <?php 493 494 $cat_args['title_li'] = ''; 495 $widget_opt_array = array('before_output' => "<ul>", 'after_output' => "</ul>", 'style' => "li"); 496 $output = wp_list_categories(apply_filters('widget_categories_args', $cat_args)); 497 467 498 } 468 499 469 echo $after_widget; 500 $widget_design = apply_filters( 'widget_design', new Widget_Basic, $args); 501 $widget_array = array( 502 'title' => $title, 503 'output' => $output 504 ); 505 $widget_args = array(array_merge($args, array_merge($widget_array, $widget_opt_array))); 506 507 echo call_user_func_array( array(&$widget_design, 'display'), $widget_args ); 508 470 509 } 471 510 472 511 function update( $new_instance, $old_instance ) { … … 475 514 $instance['count'] = $new_instance['count'] ? 1 : 0; 476 515 $instance['hierarchical'] = $new_instance['hierarchical'] ? 1 : 0; 477 516 $instance['dropdown'] = $new_instance['dropdown'] ? 1 : 0; 517 $instance['walker'] = strip_tags( $new_instance['walker'] ); 478 518 479 519 return $instance; 480 520 } 481 521 482 522 function form( $instance ) { 483 523 //Defaults 484 $instance = wp_parse_args( (array) $instance, array( 'title' => '' ) );524 $instance = wp_parse_args( (array) $instance, array( 'title' => '', 'walker' => '') ); 485 525 $title = esc_attr( $instance['title'] ); 486 526 $count = isset($instance['count']) ? (bool) $instance['count'] :false; 487 527 $hierarchical = isset( $instance['hierarchical'] ) ? (bool) $instance['hierarchical'] : false; 488 528 $dropdown = isset( $instance['dropdown'] ) ? (bool) $instance['dropdown'] : false; 529 $walker = esc_attr( $instance['walker'] ); 489 530 ?> 490 531 <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e( 'Title:' ); ?></label> 491 532 <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" /></p> … … 497 538 <label for="<?php echo $this->get_field_id('count'); ?>"><?php _e( 'Show post counts' ); ?></label><br /> 498 539 499 540 <input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id('hierarchical'); ?>" name="<?php echo $this->get_field_name('hierarchical'); ?>"<?php checked( $hierarchical ); ?> /> 500 <label for="<?php echo $this->get_field_id('hierarchical'); ?>"><?php _e( 'Show hierarchy' ); ?></label></p> 541 <label for="<?php echo $this->get_field_id('hierarchical'); ?>"><?php _e( 'Show hierarchy' ); ?></label> 542 543 <br /><br /> 544 <label for="<?php echo $this->get_field_id('walker'); ?>"><?php _e( 'Walker:' ); ?></label> <input type="text" value="<?php echo $walker; ?>" name="<?php echo $this->get_field_name('walker'); ?>" id="<?php echo $this->get_field_id('walker'); ?>" class="widefat" /> 545 <br /> 546 <small><?php _e( 'Customer Walker' ); ?></small></p> 501 547 <?php 502 548 } 503 549 … … 534 580 ob_start(); 535 581 extract($args); 536 582 537 $title = apply_filters('widget_title', empty($instance['title']) ? __('Recent Posts') : $instance['title'] );583 $title = apply_filters('widget_title', empty($instance['title']) ? __('Recent Posts') : $instance['title'], $args); 538 584 if ( !$number = (int) $instance['number'] ) 539 585 $number = 10; 540 586 else if ( $number < 1 ) … … 543 589 $number = 15; 544 590 545 591 $r = new WP_Query(array('showposts' => $number, 'nopaging' => 0, 'post_status' => 'publish', 'caller_get_posts' => 1)); 592 546 593 if ($r->have_posts()) : 547 ?> 548 <?php echo $before_widget; ?> 549 <?php if ( $title ) echo $before_title . $title . $after_title; ?> 550 <ul> 551 <?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> 553 <?php endwhile; ?> 554 </ul> 555 <?php echo $after_widget; ?> 556 <?php 594 595 while ($r->have_posts()) { 596 $r->the_post(); 597 $posts_output .= "<li><a href='" . get_permalink() . "' title='" . esc_attr(get_the_title() ? get_the_title() : get_the_ID()) . "'>" . ( ( get_the_title() ) ? get_the_title() : the_ID() ) . "</a></li>"; 598 } 599 557 600 wp_reset_query(); // Restore global post data stomped by the_post(). 601 558 602 endif; 559 603 604 $widget_design = apply_filters( 'widget_design', new Widget_Recent_Posts, $args); 605 $widget_array = array( 606 'title' => $title, 607 'before_output' => "<ul>", 608 'output' => $posts_output, 609 'after_output' => "</ul>", 610 'style' => "li" 611 ); 612 $widget_args = array(array_merge($args, $widget_array)); 613 614 echo call_user_func_array( array(&$widget_design, 'display'), $widget_args ); 615 560 616 $cache[$args['widget_id']] = ob_get_flush(); 561 617 wp_cache_add('widget_recent_posts', $cache, 'widget'); 618 562 619 } 563 620 564 621 function update( $new_instance, $old_instance ) { … … 625 682 global $wpdb, $comments, $comment; 626 683 627 684 extract($args, EXTR_SKIP); 628 $title = apply_filters('widget_title', empty($instance['title']) ? __('Recent Comments') : $instance['title'] );685 $title = apply_filters('widget_title', empty($instance['title']) ? __('Recent Comments') : $instance['title'], $args); 629 686 if ( !$number = (int) $instance['number'] ) 630 687 $number = 5; 631 688 else if ( $number < 1 ) … … 639 696 } 640 697 641 698 $comments = array_slice( (array) $comments, 0, $number ); 642 ?> 643 <?php echo $before_widget; ?> 644 <?php if ( $title ) echo $before_title . $title . $after_title; ?> 645 <ul id="recentcomments"><?php 646 if ( $comments ) : foreach ( (array) $comments as $comment) : 647 echo '<li class="recentcomments">' . /* translators: comments widget: 1: comment author, 2: post link */ sprintf(_x('%1$s on %2$s', 'widgets'), get_comment_author_link(), '<a href="' . esc_url( get_comment_link($comment->comment_ID) ) . '">' . get_the_title($comment->comment_post_ID) . '</a>') . '</li>'; 648 endforeach; endif;?></ul> 649 <?php echo $after_widget; ?> 650 <?php 699 700 if ( $comments ) : foreach ( (array) $comments as $comment) : 701 $comments_output .= '<li class="recentcomments">' . /* translators: comments widget: 1: comment author, 2: post link */ sprintf(_x('%1$s on %2$s', 'widgets'), get_comment_author_link(), '<a href="' . esc_url( get_comment_link($comment->comment_ID) ) . '">' . get_the_title($comment->comment_post_ID) . '</a>') . '</li>'; 702 endforeach; endif; 703 704 $widget_design = apply_filters( 'widget_design', new Widget_Basic, $args); 705 $widget_array = array( 706 'title' => $title, 707 'before_output' => "<ul id='recentcomments'>", 708 'output' => $comments_output, 709 'after_output' => "</ul>", 710 'style' => "li" 711 ); 712 $widget_args = array(array_merge($args, $widget_array)); 713 714 echo call_user_func_array( array(&$widget_design, 'display'), $widget_args ); 715 651 716 } 652 717 653 718 function update( $new_instance, $old_instance ) { … … 720 785 721 786 if ( empty($title) ) 722 787 $title = empty($desc) ? __('Unknown Feed') : $desc; 723 724 $title = apply_filters('widget_title', $title );788 789 $title = apply_filters('widget_title', $title, $args ); 725 790 $url = esc_url(strip_tags($url)); 726 791 $icon = includes_url('images/rss.png'); 727 792 if ( $title ) 728 793 $title = "<a class='rsswidget' href='$url' title='" . esc_attr(__('Syndicate this content')) ."'><img style='background:orange;color:white;border:none;' width='14' height='14' src='$icon' alt='RSS' /></a> <a class='rsswidget' href='$link' title='$desc'>$title</a>"; 729 730 echo $before_widget; 731 if ( $title ) 732 echo $before_title . $title . $after_title; 733 wp_widget_rss_output( $rss, $instance ); 734 echo $after_widget; 794 795 $widget_design = apply_filters( 'widget_design', new Widget_Basic, $args); 796 $widget_func_array = array_merge($instance, array('echo' => 0)); 797 $widget_array = array( 798 'title' => $title, 799 'before_output' => "<ul>", 800 'output' => wp_widget_rss_output( $rss, $widget_func_array ), 801 'after_output' => "</ul>", 802 'style' => "li" 803 ); 804 $widget_args = array(array_merge($args, $widget_array)); 805 806 echo call_user_func_array( array(&$widget_design, 'display'), $widget_args ); 807 735 808 $rss->__destruct(); 736 809 unset($rss); 737 810 } … … 760 833 * @param array $args Widget arguments. 761 834 */ 762 835 function wp_widget_rss_output( $rss, $args = array() ) { 836 837 $rss_items = ''; 838 763 839 if ( is_string( $rss ) ) { 764 840 $rss = fetch_feed($rss); 765 841 } elseif ( is_array($rss) && isset($rss['url']) ) { … … 771 847 772 848 if ( is_wp_error($rss) ) { 773 849 if ( is_admin() || current_user_can('manage_options') ) 774 echo'<p>' . sprintf( __('<strong>RSS Error</strong>: %s'), $rss->get_error_message() ) . '</p>';850 $rss_items .= '<p>' . sprintf( __('<strong>RSS Error</strong>: %s'), $rss->get_error_message() ) . '</p>'; 775 851 return; 776 852 } 777 853 778 $default_args = array( 'show_author' => 0, 'show_date' => 0, 'show_summary' => 0 );854 $default_args = array( 'show_author' => 0, 'show_date' => 0, 'show_summary' => 0, 'echo' => 1 ); 779 855 $args = wp_parse_args( $args, $default_args ); 780 856 extract( $args, EXTR_SKIP ); 781 857 … … 787 863 $show_date = (int) $show_date; 788 864 789 865 if ( !$rss->get_item_quantity() ) { 790 echo '<ul><li>' . __( 'An error has occurred; the feed is probably down. Try again later.' ) . '</li></ul>';866 $rss_items .= '<li>' . __( 'An error has occurred; the feed is probably down. Try again later.' ) . '</li>'; 791 867 $rss->__destruct(); 792 868 unset($rss); 793 869 return; 794 870 } 795 871 796 echo '<ul>';797 872 foreach ( $rss->get_items(0, $items) as $item ) { 798 873 $link = $item->get_link(); 799 874 while ( stristr($link, 'http') != $link ) … … 835 910 } 836 911 837 912 if ( $link == '' ) { 838 echo"<li>$title{$date}{$summary}{$author}</li>";913 $rss_items .= "<li>$title{$date}{$summary}{$author}</li>"; 839 914 } else { 840 echo"<li><a class='rsswidget' href='$link' title='$desc'>$title</a>{$date}{$summary}{$author}</li>";915 $rss_items .= "<li><a class='rsswidget' href='$link' title='$desc'>$title</a>{$date}{$summary}{$author}</li>"; 841 916 } 842 917 } 843 echo '</ul>'; 918 919 if ( $echo ) 920 echo $rss_items; 921 else 922 return $rss_items; 923 844 924 $rss->__destruct(); 845 925 unset($rss); 846 926 } … … 974 1054 975 1055 function widget( $args, $instance ) { 976 1056 extract($args); 977 $title = apply_filters('widget_title', empty($instance['title']) ? __('Tags') : $instance['title'] );1057 $title = apply_filters('widget_title', empty($instance['title']) ? __('Tags') : $instance['title'], $args); 978 1058 979 echo $before_widget; 980 if ( $title ) 981 echo $before_title . $title . $after_title; 982 echo '<div>'; 983 wp_tag_cloud(apply_filters('widget_tag_cloud_args', array())); 984 echo "</div>\n"; 985 echo $after_widget; 1059 $widget_design = apply_filters( 'widget_design', new Widget_Basic, $args); 1060 $widget_array = array( 1061 'title' => $title, 1062 'before_output' => "<div>", 1063 'output' => wp_tag_cloud(apply_filters('widget_tag_cloud_args', array('echo' => 0))), 1064 'after_output' => "</div>", 1065 'style' => "none" 1066 ); 1067 $widget_args = array(array_merge($args, $widget_array)); 1068 1069 echo call_user_func_array( array(&$widget_design, 'display'), $widget_args ); 1070 986 1071 } 987 1072 988 1073 function update( $new_instance, $old_instance ) { … … 998 1083 } 999 1084 } 1000 1085 1086 class Walker_Widget { 1087 1088 function start_widget($args, &$output) {} 1089 1090 function end_widget($args, &$output) {} 1091 1092 function title_widget($args, &$output) {} 1093 1094 function content_widget($args, &$output) {} 1095 1096 function display( $args = array() ) { 1097 $output = ''; 1098 call_user_func_array( array(&$this, 'start_widget'), array($args, &$output) ); 1099 call_user_func_array( array(&$this, 'title_widget'), array($args, &$output) ); 1100 call_user_func_array( array(&$this, 'content_widget'), array($args, &$output) ); 1101 call_user_func_array( array(&$this, 'end_widget'), array($args, &$output) ); 1102 return $output; 1103 } 1104 1105 } 1106 1107 class Widget_Basic extends Walker_Widget { 1108 1109 function start_widget($args, &$output) { 1110 $output .= sprintf( __("<li id='%s' class='widget %s'>"), $args['widget_id'], $args['classname'] ); 1111 } 1112 1113 function title_widget($args, &$output) { 1114 $output .= "<h2>" . $args['title'] . "</h2>"; 1115 } 1116 1117 function content_widget($args, &$output) { 1118 $output .= $args['before_output'] . $args['output'] . $args['after_output']; 1119 } 1120 1121 function end_widget($args, &$output) { 1122 $output .= "</li>"; 1123 } 1124 1125 } 1126 1127 class Widget_Tag_Cloud extends Walker_Widget { 1128 1129 function title_widget($args, &$output) { 1130 $output .= "<h2>" . $args['title'] . "</h2>"; 1131 } 1132 1133 function content_widget($args, &$output) { 1134 $output .= $args['before_output'] . $args['output'] . $args['after_output']; 1135 } 1136 1137 } 1138 1139 class Widget_Search extends Walker_Widget { 1140 1141 function title_widget($args, &$output) { 1142 $output .= $args['title']; 1143 } 1144 1145 function content_widget($args, &$output) { 1146 $output .= $args['output']; 1147 } 1148 1149 } 1150 1151 class Widget_Recent_Posts extends Walker_Widget { 1152 1153 function start_widget($args, &$output) { 1154 $output .= sprintf( __("<li id='%s' class='widget %s'>"), $args['widget_id'], $args['classname'] ); 1155 } 1156 1157 function title_widget($args, &$output) { 1158 $output .= "<h2>" . $args['title'] . "</h2>"; 1159 } 1160 1161 function content_widget($args, &$output) { 1162 $output .= $args['before_output'] . $args['output'] . $args['after_output']; 1163 } 1164 1165 function end_widget($args, &$output) { 1166 $output .= "</li>"; 1167 } 1168 1169 } 1170 1001 1171 /** 1002 1172 * Register all of the default WordPress widgets on startup. 1003 1173 * -
wp-includes/general-template.php
112 112 * 113 113 * @since 2.7.0 114 114 */ 115 function get_search_form( ) {115 function get_search_form($echo = true) { 116 116 do_action( 'get_search_form' ); 117 117 118 118 $search_form_template = locate_template(array('searchform.php')); … … 128 128 </div> 129 129 </form>'; 130 130 131 echo apply_filters('get_search_form', $form); 131 if ( $echo ) 132 echo apply_filters('get_search_form', $form); 133 else 134 return apply_filters('get_search_form', $form); 132 135 } 133 136 134 137 /** … … 141 144 * @uses apply_filters() Calls 'loginout' hook on HTML link content. 142 145 * 143 146 * @param string $redirect Optional path to redirect to on login/logout. 147 * @param boolean $echo Default to echo and not return the link. 144 148 */ 145 function wp_loginout($redirect = '' ) {149 function wp_loginout($redirect = '', $echo = true) { 146 150 if ( ! is_user_logged_in() ) 147 151 $link = '<a href="' . esc_url( wp_login_url($redirect) ) . '">' . __('Log in') . '</a>'; 148 152 else 149 153 $link = '<a href="' . esc_url( wp_logout_url($redirect) ) . '">' . __('Log out') . '</a>'; 150 151 echo apply_filters('loginout', $link); 154 155 if ( $echo ) 156 echo apply_filters('loginout', $link); 157 else 158 return apply_filters('loginout', $link); 152 159 } 153 160 154 161 /** … … 228 235 * 229 236 * @param string $before Text to output before the link (defaults to <li>). 230 237 * @param string $after Text to output after the link (defaults to </li>). 238 * @param boolean $echo Default to echo and not return the link. 231 239 */ 232 function wp_register( $before = '<li>', $after = '</li>' ) {240 function wp_register( $before = '<li>', $after = '</li>', $echo = true ) { 233 241 234 242 if ( ! is_user_logged_in() ) { 235 243 if ( get_option('users_can_register') ) … … 239 247 } else { 240 248 $link = $before . '<a href="' . admin_url() . '">' . __('Site Admin') . '</a>' . $after; 241 249 } 242 243 echo apply_filters('register', $link); 250 251 if ( $echo ) 252 echo apply_filters('register', $link); 253 else 254 return apply_filters('register', $link); 244 255 } 245 256 246 257 /** … … 952 963 * @since 1.0.0 953 964 * 954 965 * @param bool $initial Optional, default is true. Use initial calendar names. 966 * @param bool $echo Optional, default is true. Set to false for return. 955 967 */ 956 function get_calendar($initial = true ) {968 function get_calendar($initial = true, $echo = true) { 957 969 global $wpdb, $m, $monthnum, $year, $wp_locale, $posts; 958 970 959 971 $cache = array(); … … 1024 1036 1025 1037 /* translators: Calendar caption: 1: month name, 2: 4-digit year */ 1026 1038 $calendar_caption = _x('%1$s %2$s', 'calendar caption'); 1027 echo'<table id="wp-calendar" summary="' . esc_attr__('Calendar') . '">1039 $calendar_output .= '<table id="wp-calendar" summary="' . esc_attr__('Calendar') . '"> 1028 1040 <caption>' . sprintf($calendar_caption, $wp_locale->get_month($thismonth), date('Y', $unixmonth)) . '</caption> 1029 1041 <thead> 1030 1042 <tr>'; … … 1038 1050 foreach ( $myweek as $wd ) { 1039 1051 $day_name = (true == $initial) ? $wp_locale->get_weekday_initial($wd) : $wp_locale->get_weekday_abbrev($wd); 1040 1052 $wd = esc_attr($wd); 1041 echo"\n\t\t<th abbr=\"$wd\" scope=\"col\" title=\"$wd\">$day_name</th>";1053 $calendar_output .= "\n\t\t<th abbr=\"$wd\" scope=\"col\" title=\"$wd\">$day_name</th>"; 1042 1054 } 1043 1055 1044 echo'1056 $calendar_output .= ' 1045 1057 </tr> 1046 1058 </thead> 1047 1059 … … 1049 1061 <tr>'; 1050 1062 1051 1063 if ( $previous ) { 1052 echo"\n\t\t".'<td abbr="' . $wp_locale->get_month($previous->month) . '" colspan="3" id="prev"><a href="' .1064 $calendar_output .= "\n\t\t".'<td abbr="' . $wp_locale->get_month($previous->month) . '" colspan="3" id="prev"><a href="' . 1053 1065 get_month_link($previous->year, $previous->month) . '" title="' . sprintf(__('View posts for %1$s %2$s'), $wp_locale->get_month($previous->month), 1054 1066 date('Y', mktime(0, 0 , 0, $previous->month, 1, $previous->year))) . '">« ' . $wp_locale->get_month_abbrev($wp_locale->get_month($previous->month)) . '</a></td>'; 1055 1067 } else { 1056 echo"\n\t\t".'<td colspan="3" id="prev" class="pad"> </td>';1068 $calendar_output .= "\n\t\t".'<td colspan="3" id="prev" class="pad"> </td>'; 1057 1069 } 1058 1070 1059 echo"\n\t\t".'<td class="pad"> </td>';1071 $calendar_output .= "\n\t\t".'<td class="pad"> </td>'; 1060 1072 1061 1073 if ( $next ) { 1062 echo"\n\t\t".'<td abbr="' . $wp_locale->get_month($next->month) . '" colspan="3" id="next"><a href="' .1074 $calendar_output .= "\n\t\t".'<td abbr="' . $wp_locale->get_month($next->month) . '" colspan="3" id="next"><a href="' . 1063 1075 get_month_link($next->year, $next->month) . '" title="' . esc_attr( sprintf(__('View posts for %1$s %2$s'), $wp_locale->get_month($next->month) , 1064 1076 date('Y', mktime(0, 0 , 0, $next->month, 1, $next->year))) ) . '">' . $wp_locale->get_month_abbrev($wp_locale->get_month($next->month)) . ' »</a></td>'; 1065 1077 } else { 1066 echo"\n\t\t".'<td colspan="3" id="next" class="pad"> </td>';1078 $calendar_output .= "\n\t\t".'<td colspan="3" id="next" class="pad"> </td>'; 1067 1079 } 1068 1080 1069 echo'1081 $calendar_output .= ' 1070 1082 </tr> 1071 1083 </tfoot> 1072 1084 … … 1118 1130 // See how much we should pad in the beginning 1119 1131 $pad = calendar_week_mod(date('w', $unixmonth)-$week_begins); 1120 1132 if ( 0 != $pad ) 1121 echo"\n\t\t".'<td colspan="'. esc_attr($pad) .'" class="pad"> </td>';1133 $calendar_output .= "\n\t\t".'<td colspan="'. esc_attr($pad) .'" class="pad"> </td>'; 1122 1134 1123 1135 $daysinmonth = intval(date('t', $unixmonth)); 1124 1136 for ( $day = 1; $day <= $daysinmonth; ++$day ) { 1125 1137 if ( isset($newrow) && $newrow ) 1126 echo"\n\t</tr>\n\t<tr>\n\t\t";1138 $calendar_output .= "\n\t</tr>\n\t<tr>\n\t\t"; 1127 1139 $newrow = false; 1128 1140 1129 1141 if ( $day == gmdate('j', (time() + (get_option('gmt_offset') * 3600))) && $thismonth == gmdate('m', time()+(get_option('gmt_offset') * 3600)) && $thisyear == gmdate('Y', time()+(get_option('gmt_offset') * 3600)) ) 1130 echo'<td id="today">';1142 $calendar_output .= '<td id="today">'; 1131 1143 else 1132 echo'<td>';1144 $calendar_output .= '<td>'; 1133 1145 1134 1146 if ( in_array($day, $daywithpost) ) // any posts today? 1135 echo'<a href="' . get_day_link($thisyear, $thismonth, $day) . "\" title=\"" . esc_attr($ak_titles_for_day[$day]) . "\">$day</a>";1147 $calendar_output .= '<a href="' . get_day_link($thisyear, $thismonth, $day) . "\" title=\"" . esc_attr($ak_titles_for_day[$day]) . "\">$day</a>"; 1136 1148 else 1137 echo$day;1138 echo'</td>';1149 $calendar_output .= $day; 1150 $calendar_output .= '</td>'; 1139 1151 1140 1152 if ( 6 == calendar_week_mod(date('w', mktime(0, 0 , 0, $thismonth, $day, $thisyear))-$week_begins) ) 1141 1153 $newrow = true; … … 1143 1155 1144 1156 $pad = 7 - calendar_week_mod(date('w', mktime(0, 0 , 0, $thismonth, $day, $thisyear))-$week_begins); 1145 1157 if ( $pad != 0 && $pad != 7 ) 1146 echo"\n\t\t".'<td class="pad" colspan="'. esc_attr($pad) .'"> </td>';1158 $calendar_output .= "\n\t\t".'<td class="pad" colspan="'. esc_attr($pad) .'"> </td>'; 1147 1159 1148 echo"\n\t</tr>\n\t</tbody>\n\t</table>";1160 $calendar_output .= "\n\t</tr>\n\t</tbody>\n\t</table>"; 1149 1161 1150 1162 $output = ob_get_contents(); 1151 1163 ob_end_clean(); 1152 echo $output;1153 1164 $cache[ $key ] = $output; 1154 1165 wp_cache_set( 'get_calendar', $cache, 'calendar' ); 1166 1167 if ( $echo ) 1168 echo $calendar_output; 1169 else 1170 return $calendar_output; 1171 1155 1172 } 1156 1173 1157 1174 /** -
wp-includes/widgets.php
519 519 * name - The name of the sidebar, which presumably the title which will be 520 520 * displayed. 521 521 * id - The unique identifier by which the sidebar will be called by. 522 * before_widget - The content that will prepended to the widgets when they are523 * displayed.524 * after_widget - The content that will be appended to the widgets when they are525 * displayed.526 * before_title - The content that will be prepended to the title when displayed.527 * after_title - the content that will be appended to the title when displayed.528 522 * 529 523 * <em>Content</em> is assumed to be HTML and should be formatted as such, but 530 524 * doesn't have to be. … … 548 542 $defaults = array( 549 543 'name' => sprintf(__('Sidebar %d'), $i ), 550 544 'id' => "sidebar-$i", 551 'description' => '', 552 'before_widget' => '<li id="%1$s" class="widget %2$s">', 553 'after_widget' => "</li>\n", 554 'before_title' => '<h2 class="widgettitle">', 555 'after_title' => "</h2>\n", 545 'description' => '' 556 546 ); 557 547 558 548 $sidebar = array_merge($defaults, (array) $args); … … 873 863 $classname_ .= '_' . get_class($cn); 874 864 } 875 865 $classname_ = ltrim($classname_, '_'); 876 $params[0][' before_widget'] = sprintf($params[0]['before_widget'], $id, $classname_);866 $params[0]['classname'] = $classname_; 877 867 878 868 $params = apply_filters( 'dynamic_sidebar_params', $params ); 879 869 … … 1291 1281 $widget_obj = $wp_widget_factory->widgets[$widget]; 1292 1282 if ( !is_a($widget_obj, 'WP_Widget') ) 1293 1283 return; 1294 1295 $before_widget = sprintf('<div class="widget %s">', $widget_obj->widget_options['classname']); 1296 $default_args = array('before_widget' => $before_widget, 'after_widget' => "</div>", 'before_title' => '<h2 class="widgettitle">', 'after_title' => '</h2>'); 1297 1298 $args = wp_parse_args($args, $default_args); 1284 1285 echo "when do we run?"; 1286 1299 1287 $instance = wp_parse_args($instance); 1300 1288 1301 1289 $widget_obj->_set(-1);