Changeset 11484
- Timestamp:
- 05/29/2009 04:32:20 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-includes/widgets.php
r11450 r11484 327 327 328 328 function _register_widgets() { 329 global $wp_registered_widgets; 329 330 $keys = array_keys($this->widgets); 330 foreach ( $keys as $key ) 331 $registered = array_keys($wp_registered_widgets); 332 $registered = array_map('_get_widget_id_base', $registered); 333 334 foreach ( $keys as $key ) { 335 // don't register new widget if old widget with the same id is already registered 336 if ( in_array($this->widgets[$key]->id_base, $registered, true) ) { 337 unset($this->widgets[$key]); 338 continue; 339 } 340 331 341 $this->widgets[$key]->_register(); 342 } 332 343 } 333 344 } … … 367 378 */ 368 379 $_wp_sidebars_widgets = array(); 380 381 /** 382 * Private 383 */ 384 $_wp_deprecated_widgets_callbacks = array( 385 'wp_widget_pages', 386 'wp_widget_pages_control', 387 'wp_widget_calendar', 388 'wp_widget_calendar_control', 389 'wp_widget_archives', 390 'wp_widget_archives_control', 391 'wp_widget_links', 392 'wp_widget_meta', 393 'wp_widget_meta_control', 394 'wp_widget_search', 395 'wp_widget_recent_entries', 396 'wp_widget_recent_entries_control', 397 'wp_widget_tag_cloud', 398 'wp_widget_tag_cloud_control', 399 'wp_widget_categories', 400 'wp_widget_categories_control', 401 'wp_widget_text', 402 'wp_widget_text_control', 403 'wp_widget_rss', 404 'wp_widget_rss_control', 405 'wp_widget_recent_comments', 406 'wp_widget_recent_comments_control' 407 ); 369 408 370 409 /* Template tags & API functions */ … … 556 595 */ 557 596 function wp_register_sidebar_widget($id, $name, $output_callback, $options = array()) { 558 global $wp_registered_widgets ;597 global $wp_registered_widgets, $wp_registered_widget_controls, $wp_registered_widget_updates, $_wp_deprecated_widgets_callbacks; 559 598 560 599 $id = strtolower($id); … … 562 601 if ( empty($output_callback) ) { 563 602 unset($wp_registered_widgets[$id]); 603 return; 604 } 605 606 $id_base = _get_widget_id_base($id); 607 if ( in_array($output_callback, $_wp_deprecated_widgets_callbacks, true) && !is_callable($output_callback) ) { 608 if ( isset($wp_registered_widget_controls[$id]) ) 609 unset($wp_registered_widget_controls[$id]); 610 611 if ( isset($wp_registered_widget_updates[$id_base]) ) 612 unset($wp_registered_widget_updates[$id_base]); 613 564 614 return; 565 615 } … … 632 682 */ 633 683 function wp_register_widget_control($id, $name, $control_callback, $options = array()) { 634 global $wp_registered_widget_controls, $wp_registered_widget_updates ;684 global $wp_registered_widget_controls, $wp_registered_widget_updates, $wp_registered_widgets, $_wp_deprecated_widgets_callbacks; 635 685 636 686 $id = strtolower($id); 637 $ update_id = preg_replace( '/-[0-9]+$/', '', $id);687 $id_base = _get_widget_id_base($id); 638 688 639 689 if ( empty($control_callback) ) { 640 690 unset($wp_registered_widget_controls[$id]); 641 unset($wp_registered_widget_updates[$update_id]); 691 unset($wp_registered_widget_updates[$id_base]); 692 return; 693 } 694 695 if ( in_array($control_callback, $_wp_deprecated_widgets_callbacks, true) && !is_callable($control_callback) ) { 696 if ( isset($wp_registered_widgets[$id]) ) 697 unset($wp_registered_widgets[$id]); 698 642 699 return; 643 700 } … … 661 718 $wp_registered_widget_controls[$id] = $widget; 662 719 663 if ( isset($wp_registered_widget_updates[$ update_id]) )720 if ( isset($wp_registered_widget_updates[$id_base]) ) 664 721 return; 665 722 … … 668 725 669 726 unset($widget['width'], $widget['height'], $widget['name'], $widget['id']); 670 $wp_registered_widget_updates[$ update_id] = $widget;727 $wp_registered_widget_updates[$id_base] = $widget; 671 728 } 672 729 … … 838 895 if ( is_array($widgets) ) { 839 896 foreach ( $widgets as $widget ) { 840 if ( ( $callback && isset($wp_registered_widgets[$widget]['callback']) && $wp_registered_widgets[$widget]['callback'] == $callback ) || ( $id_base && preg_replace( '/-[0-9]+$/', '', $widget) == $id_base ) ) {897 if ( ( $callback && isset($wp_registered_widgets[$widget]['callback']) && $wp_registered_widgets[$widget]['callback'] == $callback ) || ( $id_base && _get_widget_id_base($widget) == $id_base ) ) { 841 898 if ( !$widget_id || $widget_id == $wp_registered_widgets[$widget]['id'] ) 842 899 return $sidebar; … … 1198 1255 * @return void 1199 1256 **/ 1200 1201 1257 function the_widget($widget, $instance = array(), $args = array()) { 1202 1258 global $wp_widget_factory; … … 1215 1271 $widget_obj->widget($args, $instance); 1216 1272 } 1273 1274 /** 1275 * Private 1276 */ 1277 function _get_widget_id_base($id) { 1278 return preg_replace( '/-[0-9]+$/', '', $id ); 1279 }
Note: See TracChangeset
for help on using the changeset viewer.