Ticket #11160: 11160-3.patch
File 11160-3.patch, 5.6 KB (added by , 14 years ago) |
---|
-
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 // This section is for backward compatibility 473 474 // $args is a name or an id 475 if ( is_int($args) ) { 476 return "sidebar-{$args}"; 477 478 } elseif ( is_string($args) ) { 479 $args = sanitize_title($args); 480 foreach ( (array) $wp_registered_sidebars as $id => $value ) { 481 if ( sanitize_title($value['name']) == $args ) { 482 return $id; 483 } 484 } 485 486 return $args; 487 488 // args is an array with an exact id or an exact name or both. 489 } elseif ( is_array($args) ) { 490 491 // id takes precedence over name. 492 if ( array_key_exists('id', $args) && array_key_exists($args['id'], $wp_registered_sidebars) ) 493 return $args['id']; 494 495 if ( array_key_exists('name', $args) ) { 496 foreach ( (array) $wp_registered_sidebars as $id => $value ) { 497 if ( $value['name'] == $args['name'] ) { 498 return $id; 499 } 500 } 501 } 502 } 503 504 return false; 505 } 506 507 508 /** 451 509 * Creates multiple sidebars. 452 510 * 453 511 * If you wanted to quickly create multiple sidebars for a theme or internally. … … 565 623 * 566 624 * @uses $wp_registered_sidebars Stores the new sidebar in this array by sidebar ID. 567 625 * 568 * @param string $name The ID of the sidebar when it was added. 626 * @param int|string|array $name The name or id of the sidebar as registered with 627 * register_sidebar(s) functions. If an array, use the register_sidebar() syntax 628 * including keys 'name', 'id' or both. 569 629 */ 570 function unregister_sidebar( $name) {630 function unregister_sidebar($name) { 571 631 global $wp_registered_sidebars; 632 $name = wp_get_sidebar_id($name); 572 633 573 634 if ( isset( $wp_registered_sidebars[$name] ) ) 574 635 unset( $wp_registered_sidebars[$name] ); … … 825 886 * 826 887 * @since 2.2.0 827 888 * 828 * @param int|string $index Optional, default is 1. Name or ID of dynamic sidebar. 889 * @param int|string|array $args Optional, default is 1. The name or id of the wigdet 890 * specified by register_sidebar(s) functions. As an array use the register_sidebar() 891 * syntax identifying sidebar by name or id or both. 829 892 * @return bool True, if widget sidebar was found and called. False if not found or not called. 830 893 */ 831 function dynamic_sidebar($ index= 1) {894 function dynamic_sidebar($name = 1) { 832 895 global $wp_registered_sidebars, $wp_registered_widgets; 833 896 834 if ( is_int($index) ) { 835 $index = "sidebar-$index"; 836 } else { 837 $index = sanitize_title($index); 838 foreach ( (array) $wp_registered_sidebars as $key => $value ) { 839 if ( sanitize_title($value['name']) == $index ) { 840 $index = $key; 841 break; 842 } 843 } 844 } 897 $name = wp_get_sidebar_id($name); 845 898 846 899 $sidebars_widgets = wp_get_sidebars_widgets(); 847 900 848 if ( empty($wp_registered_sidebars[$ index]) || !array_key_exists($index, $sidebars_widgets) || !is_array($sidebars_widgets[$index]) || empty($sidebars_widgets[$index]) )901 if ( empty($wp_registered_sidebars[$name]) || !array_key_exists($name, $sidebars_widgets) || !is_array($sidebars_widgets[$name]) || empty($sidebars_widgets[$name]) ) 849 902 return false; 850 903 851 $sidebar = $wp_registered_sidebars[$ index];904 $sidebar = $wp_registered_sidebars[$name]; 852 905 853 906 $did_one = false; 854 foreach ( (array) $sidebars_widgets[$ index] as $id ) {907 foreach ( (array) $sidebars_widgets[$name] as $id ) { 855 908 856 909 if ( !isset($wp_registered_widgets[$id]) ) continue; 857 910 … … 953 1006 * 954 1007 * @since 2.8 955 1008 * 956 * @param mixed $index, sidebar name, id or number to check. 1009 * @param int|string|array $name The name or id of the sidebar as registered with 1010 * register_sidebar(s) functions. If an array, use the register_sidebar() syntax 1011 * including keys 'name' or 'id' or both. 1012 * 957 1013 * @return bool true if the sidebar is in use, false otherwise. 958 1014 */ 959 function is_active_sidebar( $index) {960 $ index = ( is_int($index) ) ? "sidebar-$index" : sanitize_title($index);1015 function is_active_sidebar($name) { 1016 $name = wp_get_sidebar_id($name); 961 1017 $sidebars_widgets = wp_get_sidebars_widgets(); 962 if ( isset($sidebars_widgets[$index]) && !empty($sidebars_widgets[$index]) )963 return true;964 1018 965 return false;1019 return !empty($sidebars_widgets[$name]); 966 1020 } 967 1021 968 1022 /* Internal Functions */