neiltrodden
  • 0
Новичок

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

  • 0

Отказ от ответственности: я новичок в 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 — я хотел бы иметь возможность определять пользовательскую область виджетов и знать, как отображать ее на определенной странице.

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

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

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

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

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

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

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

    • 0
  3. 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) прямо из своей темы.

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

    • 0

Оставить ответ

You must login to add an answer.