Ticket #5352: register_sidebars_patch.diff

File register_sidebars_patch.diff, 1.1 KB (added by watson, 5 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}