WordPress.org

Make WordPress Core

Changeset 5358


Ignore:
Timestamp:
04/30/2007 08:02:02 PM (11 years ago)
Author:
ryan
Message:

Widget registration fixes from Andy. For 2.3. see #4169

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/widgets.php

    r5356 r5358  
    4444
    4545    $defaults = array(
    46         'name' => sprintf(__('Sidebar %d'), count($wp_registered_sidebars) + 1 ),
     46        'name' => sprintf(__('Sidebar %d'), $i ),
     47        'id' => "sidebar-$i",
    4748        'before_widget' => '<li id="%1$s" class="widget %2$s">',
    4849        'after_widget' => "</li>\n",
     
    5354    $sidebar = array_merge($defaults, $args);
    5455
    55     if ( ! isset($sidebar['id']) ) $sidebar['id'] = sanitize_title($sidebar['name']);
    5656    $wp_registered_sidebars[$sidebar['id']] = $sidebar;
    5757
     
    221221
    222222function wp_get_sidebars_widgets($update = true) {
    223     global $wp_registered_widgets;
     223    global $wp_registered_widgets, $wp_registered_sidebars;
    224224
    225225    $sidebars_widgets = get_option('sidebars_widgets');
     
    247247            }
    248248            $_sidebars_widgets['array_version'] = 2;
     249            $sidebars_widgets = $_sidebars_widgets;
     250            unset($_sidebars_widgets);
     251
     252        case 2 :
     253            $sidebars = array_keys( $wp_registered_sidebars );
     254            if ( !empty( $sidebars ) ) {
     255                // Move the known-good ones first
     256                foreach ( $sidebars as $id ) {
     257                    if ( array_key_exists( $id, $sidebars_widgets ) ) {
     258                        $_sidebars_widgets[$id] = $sidebars_widgets[$id];
     259                        unset($sidebars_widgets[$id], $sidebars[$id]);
     260                    }
     261                }
     262
     263                // Assign to each unmatched registered sidebar the first available orphan
     264                unset( $sidebars_widgets[ 'array_version' ] );
     265                while ( ( $sidebar = array_shift( $sidebars ) ) && $widgets = array_shift( $sidebars_widgets ) )
     266                    $_sidebars_widgets[ $sidebar ] = $widgets;
     267
     268                $_sidebars_widgets['array_version'] = 3;
     269                $sidebars_widgets = $_sidebars_widgets;
     270                unset($_sidebars_widgets);
     271            }
     272
    249273            if ( $update )
    250                 update_option('sidebars_widgets', $_sidebars_widgets);
    251             break;
    252         case 2 :
    253             $_sidebars_widgets = $sidebars_widgets;
    254             break;
    255     }
    256 
    257     unset($_sidebars_widgets['array_version']);
    258 
    259     return $_sidebars_widgets;
     274                update_option('sidebars_widgets', $sidebars_widgets);
     275    }
     276
     277    unset($sidebars_widgets['array_version']);
     278
     279    return $sidebars_widgets;
    260280}
    261281
     
    544564    var dropdown = document.getElementById("cat");
    545565    function onCatChange() {
    546         location.href = "?cat="+dropdown.options[dropdown.selectedIndex].value;
     566        location.href = "<?php echo get_option('siteurl'); ?>/?cat="+dropdown.options[dropdown.selectedIndex].value;
    547567    }
    548568    dropdown.onchange = onCatChange;
Note: See TracChangeset for help on using the changeset viewer.