register_sidebar ($ args)에서 id 인수로 허용되는 것


13

사이드 바를 등록하고 싶지만 함수 에서 id인수 사용에 대해 약간 혼란 스럽습니다 register_sidebar.

Codex의 말 : id-사이드 바 id-공백없이 모두 소문자 여야합니다 (기본값은 숫자가 자동 ​​증가하는 ID 임).

id인수 는 어떤 용도로 사용되며 항상 숫자 형식이어야합니까?

답변:


10

사이드 바 ID는이 특정 사이드 바를 고유하게 식별하는 데 사용됩니다. 설정하지 않고 다른 항목이 생성되면 사이드 바가 예기치 않은 위치로 이동하는 것을 알 수 있습니다!

숫자 일 필요는 없습니다. 문자열도 사용할 수 있습니다.


32

John Landells의 대답은 좋고 정확합니다.

금지 또는 예약 된 ID 목록 을 추가하고 싶습니다. 이러한 ID는 위젯 구성 페이지에 나타날 수 있습니다 /wp-admin/widgets.php. 이 중 하나를 사용하면 ID가 중복되어 이상한 일이 발생합니다. 드래그 앤 드롭은 더 이상 작동하지 않을 것입니다. 가장 명백한 사례는 티켓 # 14466 을 참조하십시오 #footer.

업데이트 지난달 17 : #footer 됩니다 WP 3.5에서 허용 .
업데이트 11 월 11 일 06 : 티켓 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 -*-
/* Plugin Name: 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
}
);

8
+1 (편집) 코덱에register_sidebar() 추가되었습니다 .
카이저

어떤 이유로 든 아이디가 시작하는 위젯 영역 head은 관리자 페이지에서 제대로 렌더링되지 않는 경향이 있습니다
Manny Fleurmond

WP 4.1에서는 widgets--aside(더블 대시) 와 같이 BEM 표기법으로 ID가있는 사이드 바를 등록 할 때 위젯 영역이 위젯 관리 페이지에 나타나지만 추가 위젯은 페이지를 떠난 후에도 남아 있지 않습니다.
Volker E.

훌륭한 자원. 나는 그들이 접두사, 위젯에 대한 일종의 접두사와의 이름 충돌을 해결하지 못하는 이유가 궁금합니다 ... IE _widget_${id}
Eddie B


0

분명히 위의 목록에서 접두사를 포함하는 ID도 피해야합니다.

예 :

#footer-xxx
#footer-yyy

다음 설정은 처음에는 작동했지만 오류가 발생했습니다 (몬순 테마 사용).

register_sidebar( array(
    'name'          => esc_html__( 'Footer Area', 'monsoon' ),
    'id'            => 'footer-area',
    'description'   => esc_html__( 'Appears above the footer.', 'monsoon' ),
    'before_widget' => '<div class="col-sm-3 footer-area widget %2$s">',
    'after_widget'  => '</div>',
    'before_title'  => '<h3>',
    'after_title'   => '</h3>',
) );

사이드 바의 이름을 바꾸면 오류가 사라졌습니다. 그래도 다른 주제에 대해서는 테스트하지 않았습니다. 따라서 이것은 내 설정에만 적용 할 수 있습니다.

그러나 스레드는 실제로 솔루션을 찾는 데 도움이되었습니다. :)


(예를 들어 코드 예제에 의해 구워진) 일부 컨텍스트를 제공하십시오.
kaiser

설명을 위해 몇 줄을 더 추가했습니다.
mathiasmadsen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.