Отказ от ответственности: Я новичок в 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 - я хотел бы иметь возможность определять область пользовательских виджетов и знать, как ее отображать на определенной странице.
Благодаря тонну.
Вы просто вызываете 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('name')
получает шаблон боковой панели с именем 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)
предназначен для использования с шаблонами боковых панелей. Если они вам не нужны, вы можете просто вызвать dynamic_sidebar(sidebarname)
прямо из вашей темы.
get_sidebar('footer')
пытается загрузить sidebar-footer.php
из активной темы. Starkers предоставляет этот файл. Проверьте starkers/sidebar-footer.php
, и все должно стать ясно.