Ticket #11160: 11160-1.patch
File 11160-1.patch, 5.3 KB (added by , 14 years ago) |
---|
-
wp-includes/widgets.php
381 381 /** 382 382 * Private 383 383 */ 384 385 384 $_wp_deprecated_widgets_callbacks = array( 385 'wp_widget_pages', 386 386 'wp_widget_pages_control', 387 387 'wp_widget_calendar', 388 388 'wp_widget_calendar_control', … … 404 404 'wp_widget_rss_control', 405 405 'wp_widget_recent_comments', 406 406 'wp_widget_recent_comments_control' 407 407 ); 408 408 409 409 /* Template tags & API functions */ 410 410 … … 448 448 } 449 449 450 450 /** 451 * Return the registered ID of a sidebar given it's name or registration ID. 452 * 453 * Since register_sidebar() supports it, this function will look for sidebars 454 * named as integers or as a default id (like 2 or 'sidebar-13') first and check 455 * those as IDs if the name fails (and those IDs exist). 456 * ie: $id = wp_get_sidebar_id(1); 457 * $id = wp_get_sidebar_id('Sidebar Top'); 458 * 459 * wp_get_sidebar_id() will also take an array of arguments. The array should have 460 * keys 'name', 'id' or both: $id = wp_get_sidebar_id( array('id' => 'sidebar-1') ); 461 * 462 * @since 2.9.0 463 * 464 * @param int|string|array $args The name or id of the sidebar as registered with 465 * register_sidebar(s) functions. If an array, use the register_sidebar() syntax. 466 * 467 * @return mixed returns false if id not found or returns sidebar id. 468 */ 469 function wp_get_sidebar_id($args) { 470 global $wp_registered_sidebars; 471 472 if ( is_array($args) ) { 473 // $args is an array holding a name, an id or both. 474 if ( !empty($args['id']) ) 475 $args = $args['id']; 476 elseif ( !empty($args['name']) ) 477 $args = $args['name']; 478 else 479 return false; 480 } 481 482 if ( (int) $args ) { // $args could be int 1 or string '1' 483 return "sidebar-$args"; 484 } elseif ( is_string($args) ) { 485 $name = sanitize_title($args); 486 487 if ( array_key_exists($name, (array) $wp_registered_sidebars) ) 488 return $name; 489 490 foreach ( (array) $wp_registered_sidebars as $id => $value ) { 491 if ( sanitize_title($value['name']) == $name ) 492 return $id; 493 } 494 } 495 496 return false; 497 } 498 499 500 /** 451 501 * Creates multiple sidebars. 452 502 * 453 503 * If you wanted to quickly create multiple sidebars for a theme or internally. … … 564 614 * 565 615 * @uses $wp_registered_sidebars Stores the new sidebar in this array by sidebar ID. 566 616 * 567 * @param string $name The ID of the sidebar when it was added. 617 * @param int|string|array $name The name or id of the sidebar as registered with 618 * register_sidebar(s) functions. If an array, use the register_sidebar() syntax 619 * including keys 'name', 'id' or both. 568 620 */ 569 function unregister_sidebar( $name) {621 function unregister_sidebar($name) { 570 622 global $wp_registered_sidebars; 623 $name = wp_get_sidebar_id($name); 571 624 572 625 if ( isset( $wp_registered_sidebars[$name] ) ) 573 626 unset( $wp_registered_sidebars[$name] ); … … 802 855 * 803 856 * @since 2.2.0 804 857 * 805 * @param int|string $index Optional, default is 1. Name or ID of dynamic sidebar. 858 * @param int|string|array $args Optional, default is 1. The name or id of the wigdet 859 * specified by register_sidebar(s) functions. As an array use the register_sidebar() 860 * syntax identifying sidebar by name or id or both. 806 861 * @return bool True, if widget sidebar was found and called. False if not found or not called. 807 862 */ 808 function dynamic_sidebar($ index= 1) {863 function dynamic_sidebar($name = 1) { 809 864 global $wp_registered_sidebars, $wp_registered_widgets; 810 865 811 if ( is_int($index) ) { 812 $index = "sidebar-$index"; 813 } else { 814 $index = sanitize_title($index); 815 foreach ( (array) $wp_registered_sidebars as $key => $value ) { 816 if ( sanitize_title($value['name']) == $index ) { 817 $index = $key; 818 break; 819 } 820 } 821 } 866 $name = wp_get_sidebar_id($name); 822 867 823 868 $sidebars_widgets = wp_get_sidebars_widgets(); 824 869 825 if ( empty($wp_registered_sidebars[$ index]) || !array_key_exists($index, $sidebars_widgets) || !is_array($sidebars_widgets[$index]) || empty($sidebars_widgets[$index]) )870 if ( empty($wp_registered_sidebars[$name]) || !array_key_exists($name, $sidebars_widgets) || !is_array($sidebars_widgets[$name]) || empty($sidebars_widgets[$name]) ) 826 871 return false; 827 872 828 $sidebar = $wp_registered_sidebars[$ index];873 $sidebar = $wp_registered_sidebars[$name]; 829 874 830 875 $did_one = false; 831 foreach ( (array) $sidebars_widgets[$ index] as $id ) {876 foreach ( (array) $sidebars_widgets[$name] as $id ) { 832 877 833 878 if ( !isset($wp_registered_widgets[$id]) ) continue; 834 879 … … 930 975 * 931 976 * @since 2.8 932 977 * 933 * @param mixed $index, sidebar name, id or number to check. 978 * @param int|string|array $name The name or id of the sidebar as registered with 979 * register_sidebar(s) functions. If an array, use the register_sidebar() syntax 980 * including keys 'name' or 'id' or both. 981 * 934 982 * @return bool true if the sidebar is in use, false otherwise. 935 983 */ 936 function is_active_sidebar( $index) {937 $ index = ( is_int($index) ) ? "sidebar-$index" : sanitize_title($index);984 function is_active_sidebar($name) { 985 $name = wp_get_sidebar_id($name); 938 986 $sidebars_widgets = wp_get_sidebars_widgets(); 939 if ( isset($sidebars_widgets[$index]) && !empty($sidebars_widgets[$index]) ) 940 return true; 941 942 return false; 987 988 return !empty($sidebars_widgets[$name]); 943 989 } 944 990 945 991 /* Internal Functions */