Make WordPress Core

Ticket #5352: register_sidebars_patch.diff

File register_sidebars_patch.diff, 1.1 KB (added by watson, 18 years ago)
  • wp-includes/widgets.php

     
    1313/* Template tags & API functions */
    1414
    1515function register_sidebars($number = 1, $args = array()) {
     16        global $wp_registered_sidebars;
    1617        $number = (int) $number;
    1718
    1819        if ( is_string($args) )
     
    2021
    2122        for ( $i=1; $i <= $number; $i++ ) {
    2223                $_args = $args;
     24
    2325                if ( $number > 1 ) {
    24                         $_args['name'] = isset($args['name']) ? $args['name'] : sprintf(__('Sidebar %d'), $i);
     26                        $_args['name'] = isset($args['name']) ? sprintf($args['name'], $i) : sprintf(__('Sidebar %d'), $i);
    2527                } else {
    2628                        $_args['name'] = isset($args['name']) ? $args['name'] : __('Sidebar');
    2729                }
    28                 $_args['id'] = isset($args['id']) ? $args['id'] : "sidebar-$i";
     30
     31                if (isset($args['id'])) {
     32                        $_args['id'] = $args['id'];
     33                } else {
     34                        $n = count($wp_registered_sidebars);
     35                        do {
     36                                $n++;
     37                                $_args['id'] = "sidebar-$n";
     38                        } while (isset($wp_registered_sidebars[$_args['id']]));
     39                }
     40
    2941                register_sidebar($_args);
    3042        }
    3143}