Что разрешено использовать в качестве аргумента id в register_sidebar( $args )
Я хочу зарегистрировать сайдбар, но немного запутался в использовании аргумента id
в функции register_sidebar
.
Кодекс говорит: id - Идентификатор сайдбара - Должен состоять только из символов в нижнем регистре, без пробелов (по умолчанию используется автоматически увеличивающийся числовой ID).
Для чего нужен аргумент id
и должен ли он всегда быть в числовой форме?

Ответ Джона Ланделлса хороший и правильный.
Хочу добавить Список запрещённых или зарезервированных ID – эти ID могут появляться на странице настройки виджетов /wp-admin/widgets.php
. Если вы используете один из них... могут происходить странные вещи из-за дублирования ID. Drag and drop, скорее всего, перестанет работать. Смотрите Тикет #14466 для самого очевидного случая: #footer
.
Обновление от 17 сентября: #footer
будет разрешён в WP 3.5.
Обновление от 6 ноября: Согласно тикету 14466, все ID виджетов в widgets.php
теперь имеют префикс sidebar-
. Следующий список устареет с выходом WordPress 3.5. Возможно.
Также, ID не должен начинаться с цифры – это недопустимый HTML.
Плагины, влияющие на этот список: Debug Bar, Debug Bar Cron, Monster Widget.
#_wpnonce_widgets
#ab-awaiting-mod
#access-off
#access-on
#adminmenu
#adminmenuback
#adminmenushadow
#adminmenuwrap
#adv-settings
#available-widgets
#collapse-button
#collapse-menu
#colors-css
#contextual-help-back
#contextual-help-columns
#contextual-help-link
#contextual-help-link-wrap
#contextual-help-wrap
#debug-bar-actions
#debug-bar-cron
#debug-bar-css
#debug-bar-info
#debug-bar-menu
#debug-bar-wp-query
#debug-menu-link-Debug_Bar_Object_Cache
#debug-menu-link-Debug_Bar_Queries
#debug-menu-link-Debug_Bar_WP_Query
#debug-menu-link-ZT_Debug_Bar_Cron
#debug-menu-links
#debug-menu-target-Debug_Bar_Object_Cache
#debug-menu-target-Debug_Bar_Queries
#debug-menu-target-Debug_Bar_WP_Query
#debug-menu-target-ZT_Debug_Bar_Cron
#debug-menu-targets
#debug-status
#debug-status-db
#debug-status-memory
#debug-status-php
#debug-status-site
#footer
#footer-left
#footer-thankyou
#footer-upgrade
#icon-themes
#menu-appearance
#menu-comments
#menu-dashboard
#menu-links
#menu-media
#menu-pages
#menu-plugins
#menu-posts
#menu-posts-domicile
#menu-settings
#menu-tools
#menu-users
#object-cache-stats
#querylist
#removing-widget
#rss-items-2
#rss-items-__i__
#rss-show-author-2
#rss-show-author-__i__
#rss-show-date-2
#rss-show-date-__i__
#rss-show-summary-2
#rss-show-summary-__i__
#rss-title-2
#rss-title-__i__
#rss-url-2
#rss-url-__i__
#screen-meta
#screen-meta-links
#screen-options-link-wrap
#screen-options-wrap
#screenoptionnonce
#show-settings-link
#tab-link-missing-widgets
#tab-link-overview
#tab-link-removing-reusing
#tab-panel-missing-widgets
#tab-panel-overview
#tab-panel-removing-reusing
#widget-10_recent-posts-__i__
#widget-11_rss-__i__
#widget-12_search-__i__
#widget-13_tag_cloud-__i__
#widget-14_text-__i__
#widget-15_widget_twentyeleven_ephemera-__i__
#widget-16_rss-2
#widget-1_archives-__i__
#widget-2_calendar-__i__
#widget-3_categories-__i__
#widget-4_nav_menu-__i__
#widget-5_links-__i__
#widget-6_meta-__i__
#widget-7_monster-__i__
#widget-8_pages-__i__
#widget-9_recent-comments-__i__
#widget-archives-__i__-count
#widget-archives-__i__-dropdown
#widget-archives-__i__-savewidget
#widget-archives-__i__-title
#widget-calendar-__i__-savewidget
#widget-calendar-__i__-title
#widget-categories-__i__-count
#widget-categories-__i__-dropdown
#widget-categories-__i__-hierarchical
#widget-categories-__i__-savewidget
#widget-categories-__i__-title
#widget-links-__i__-category
#widget-links-__i__-description
#widget-links-__i__-images
#widget-links-__i__-limit
#widget-links-__i__-name
#widget-links-__i__-orderby
#widget-links-__i__-rating
#widget-links-__i__-savewidget
#widget-list
#widget-meta-__i__-savewidget
#widget-meta-__i__-title
#widget-monster-__i__-savewidget
#widget-nav_menu-__i__-nav_menu
#widget-nav_menu-__i__-savewidget
#widget-nav_menu-__i__-title
#widget-pages-__i__-exclude
#widget-pages-__i__-savewidget
#widget-pages-__i__-sortby
#widget-pages-__i__-title
#widget-recent-comments-__i__-number
#widget-recent-comments-__i__-savewidget
#widget-recent-comments-__i__-title
#widget-recent-posts-__i__-number
#widget-recent-posts-__i__-savewidget
#widget-recent-posts-__i__-title
#widget-rss-2-savewidget
#widget-rss-__i__-savewidget
#widget-search-__i__-savewidget
#widget-search-__i__-title
#widget-tag_cloud-__i__-savewidget
#widget-tag_cloud-__i__-taxonomy
#widget-tag_cloud-__i__-title
#widget-text-__i__-filter
#widget-text-__i__-savewidget
#widget-text-__i__-text
#widget-text-__i__-title
#widget-widget_twentyeleven_ephemera-__i__-number
#widget-widget_twentyeleven_ephemera-__i__-savewidget
#widget-widget_twentyeleven_ephemera-__i__-title
#widgets-left
#widgets-right
#wp-admin-bar-a8c_developer
#wp-admin-bar-comments
#wp-admin-bar-debug-bar
#wp-admin-bar-edit-profile
#wp-admin-bar-logout
#wp-admin-bar-my-account
#wp-admin-bar-new-content
#wp-admin-bar-new-content-default
#wp-admin-bar-new-domicile
#wp-admin-bar-new-link
#wp-admin-bar-new-media
#wp-admin-bar-new-page
#wp-admin-bar-new-post
#wp-admin-bar-new-user
#wp-admin-bar-root-default
#wp-admin-bar-site-name
#wp-admin-bar-site-name-default
#wp-admin-bar-top-secondary
#wp-admin-bar-updates
#wp-admin-bar-user-actions
#wp-admin-bar-user-info
#wp-admin-bar-view-site
#wp_inactive_widgets
#wpadminbar
#wpbody
#wpbody-content
#wpcontent
#wpwrap
#zt-debug-bar-cron-css
Я собрал ID с помощью небольшого плагина, который можно использовать на любой странице:
<?php # -*- coding: utf-8 -*-
/* Имя плагина: T5 List IDs */
add_action( 'shutdown', function()
{ ?>
<script>
jQuery( function( $ )
{
var els = []
$( '[id]' ).each( function() { els.push( this.id ) } )
els.sort()
var pre = $( '<pre/>' ).css( 'margin','10px' ).html( '#'+els.join( '<br>#' ) )
$( document.documentElement ).append( pre )
})
</script><?php
}
);

+1 (Правка) Добавлено в Кодекс register_sidebar()
.

По какой-то причине области виджетов, ID которых начинается с head
, могут отображаться некорректно в админке, по крайней мере у меня

В WP 4.1 я столкнулся с другой особенностью: при регистрации сайдбара с ID в нотации BEM, например widgets--aside
(двойное тире), область виджетов отображается на странице управления виджетами, но добавленные виджеты не сохраняются после выхода со страницы.

ID боковой панели используется для уникальной идентификации конкретной боковой панели. Если вы его не укажете и что-то создаст другую, вы можете обнаружить, что ваша боковая панель переместилась в неожиданное место!
Он не обязательно должен быть числовым — вы также можете использовать строки.

Похоже, следует избегать идентификаторов, которые содержат префиксы из приведенного выше списка:
Например:
#footer-xxx
#footer-yyy
Следующая настройка изначально работала, но приводила к ошибкам (при использовании темы monsoon):
register_sidebar( array(
'name' => esc_html__( 'Область футера', 'monsoon' ),
'id' => 'footer-area',
'description' => esc_html__( 'Отображается над футером.', 'monsoon' ),
'before_widget' => '<div class="col-sm-3 footer-area widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h3>',
'after_title' => '</h3>',
) );
После переименования области виджетов ошибки исчезли. Однако я не тестировал это на других темах, поэтому данное решение может быть применимо только к моей настройке.
Тем не менее, эта тема действительно помогла мне найти решение :)
