Intereting Posts
Невозможно загрузить изображения (ошибка «файл превышает upload_max_filesize») Почему akismet предотвращает появление комментариев Jetpack в моей очереди модерации? либо single-{custom} .php 404's OR / таксономия / 404's – пользовательский тип сообщения и таксономия permalinks Показывать страницы архивного архива для авторов без сообщений Выделить комментарии всех авторов сайта Создать ручной счетчик WordPress Удалите все пользовательские сообщения, затем загрузите новый CSV-событий Функция в моем плагине называется дважды Как я могу использовать условия WP Mobile Detect изнутри плагина? Редактирование исходного кода в WordPress Добавить сообщение об ошибке на страницах, защищенных паролем WordPress, альтернативный шаблон для одной записи Боковая панель случайного автора Как я могу управлять и ограничивать использование диска для каждого автора? Сохраненные письма на панели управления

Как работают register_sidebar () и get_sidebar () вместе?

Отказ от ответственности: я бренд, шлепнувший новый для WP.

Я использую тему рамки Starkers HTML5 . В functions.php я вижу этот код:

 function starkers_widgets_init() { // Area 1, located at the top of the sidebar. register_sidebar( array( 'name' => __( 'Primary Widget Area', 'starkers' ), 'id' => 'primary-widget-area', 'description' => __( 'The primary widget area', 'starkers' ), 'before_widget' => '<li>', 'after_widget' => '</li>', 'before_title' => '<h3>', 'after_title' => '</h3>', ) ); // Area 3, located in the footer. Empty by default. register_sidebar( array( 'name' => __( 'First Footer Widget Area', 'starkers' ), 'id' => 'first-footer-widget-area', 'description' => __( 'The first footer widget area', 'starkers' ), 'before_widget' => '<li>', 'after_widget' => '</li>', 'before_title' => '<h3>', 'after_title' => '</h3>', ) ); // ... more calls to register_sidebar() ... } 

И в footer.php я вижу этот код:

 <?php get_sidebar( 'footer' ); ?> 

Я не понимаю, как get_sidebar() знает, как принять этот строковый аргумент и найти соответствующие виджеты, которые были определены register_sidebar() . В фрагменте functions.php, который я опубликовал выше. Не упоминается «нижний колонтитул», кроме name , id и свойств description . Но мне показалось странным, что get_sidebar() будет искать «нижний колонтитул» внутри этих свойств.

Имеет ли это смысл, о чем я прошу? Есть ли недостающая часть?

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

Благодаря тонну.

Solutions Collecting From Web of "Как работают register_sidebar () и get_sidebar () вместе?"

Вы просто вызываете get_sidebar() из index.php и загружаете файл темы sidebar.php .

register_sidebar() , с другой стороны, используется для виджетов, где плагины и такие хотят динамически добавлять контент в файл sidebar.php если ваша тема поддерживает его.

В вашем случае есть файл sidebar-footer.php в каталоге вашей темы?

Я никогда не беспокоился о get_sidebar() . Вместо этого я просто использую dynamic_sidebar() . Вы бы назвали это так:

 dynamic_sidebar('first-footer-widget-area'); 

И это касается всей боковой панели. Больше никаких включений файлов, никаких более суматошных тематических папок. Если я хочу иметь 5 разных боковых панелей, он не добавляет никаких файлов, а только дополнительные функции в functions.php .

get_sidebar('footer') пытается загрузить sidebar-footer.php из активной темы. Starkers предоставляет этот файл. Проверьте starkers/sidebar-footer.php и все должно стать ясным.

get_sidebar('name') получает шаблон sidebar-name.php имени sidebar-name.php .

Внутри sidebar-name.php есть HTML-код для боковой панели и вызов dynamic_sidebar('some-name-hopefully-the-same') , в котором будут отображаться виджеты.

register_sidebar(array(name=>'some-name-hopefully-the-same', ...)) – это то, что позволяет dynamic_sidebar работать.

Как вы можете видеть, get_sidebar(templatename) предназначен для использования с get_sidebar(templatename) . Если вам нет нужды в них, вы можете просто вызвать dynamic_sidebar(sidebarname) непосредственно из своей темы.