Что разрешено использовать в качестве аргумента id в register_sidebar( $args )

28 июл. 2012 г., 16:27:17
Просмотры: 13.8K
Голосов: 13

Я хочу зарегистрировать сайдбар, но немного запутался в использовании аргумента id в функции register_sidebar.

Кодекс говорит: id - Идентификатор сайдбара - Должен состоять только из символов в нижнем регистре, без пробелов (по умолчанию используется автоматически увеличивающийся числовой ID).

Для чего нужен аргумент id и должен ли он всегда быть в числовой форме?

0
Все ответы на вопрос 4
4
30

Ответ Джона Ланделлса хороший и правильный.

Хочу добавить Список запрещённых или зарезервированных 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
}
);
28 июл. 2012 г. 18:51:09
Комментарии

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

kaiser kaiser
29 июл. 2012 г. 02:34:27

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

Manny Fleurmond Manny Fleurmond
9 дек. 2013 г. 08:18:07

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

Volker E. Volker E.
2 февр. 2015 г. 08:39:30

Отличный ресурс. Интересно, почему они не решают проблему конфликтов имен с помощью постфикса, префикса или чего-то подобного для виджетов... Например, _widget_${id} и т.д.

Edward J Beckett Edward J Beckett
1 авг. 2015 г. 19:16:17
0
10

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

Он не обязательно должен быть числовым — вы также можете использовать строки.

28 июл. 2012 г. 16:43:00
0

Вам следует избегать множественных символов -, например, test1---test2

9 апр. 2015 г. 17:28:34
2

Похоже, следует избегать идентификаторов, которые содержат префиксы из приведенного выше списка:

Например:

#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>',
) );

После переименования области виджетов ошибки исчезли. Однако я не тестировал это на других темах, поэтому данное решение может быть применимо только к моей настройке.

Тем не менее, эта тема действительно помогла мне найти решение :)

16 мар. 2016 г. 16:32:57
Комментарии

Пожалуйста, предоставьте некоторый контекст (подкрепленный примерами кода, например).

kaiser kaiser
17 мар. 2016 г. 00:58:41

Добавил еще несколько строк для ясности.

mathiasmadsen mathiasmadsen
19 мар. 2016 г. 08:57:37