#12606 closed defect (bug) (fixed)
register_sidebars(n) fails to register multiple sidebars when 'id' argument defined
Reported by: |
|
Owned by: |
|
---|---|---|---|
Milestone: | 3.0 | Priority: | normal |
Severity: | major | Version: | 2.9.2 |
Component: | Widgets | Keywords: | widgets register_sidebars |
Focuses: | Cc: |
Description
When using default args for 'register_sidebars()' as defined on Codex:
$args = array( 'name' => 'My Custom Sidebar %d', 'id' => 'my-custom-sidebar-$i', 'before_widget' => '<li id=\"%1$s\" class=\"widget %2$s\">', 'after_widget' => '</li>', 'before_title' => '<h2 class=\"widgettitle\">', 'after_title' => '</h2>' );
'id' argument won't get the '$i' variable value, thus won't be unique for each sidebar. Because all sidebars will end up using the same id, each iteration will override the previous sidebar. This obviously causes the system to register only 1 sidebar (the last iteration).
If 'id' argument is simply not defined and the function is allowed to use the default all sidebars are created, which is OK unless you insert another sidebar before, in which case all settings are lost. This is because the default 'id' argument for multiple sidebars is dependent on the sidebar's position in the wp_registered_sidebars array.
Proposed solution attached.
Attachments (1)
Change History (8)
#7
@
11 years ago
- Keywords changed from widgets, register_sidebars to widgets register_sidebars
The documentation was wrong. The point is, 'id' needs to be just a simple string, like 'sidebar' or 'mybar', not 'sidebar-$i' nor 'sidebar-%d'. The number will be appended automatically to the id, as stated in the textual description below the example cited in this ticket.
Proposed solution for Ticket #12606