it-swarm-eu.dev

Jak fungují registry_sidebar () a get_sidebar ()?

Zřeknutí se odpovědnosti: Jsem nová značka WP.

Používám téma Starkers HTML5 framework . V functions.php vidím tento kód:

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() ... 
}

A v footer.php vidím tento kód:

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

Nechápu, jak get_sidebar() ví, jak tento řetězec argumentovat a najít vhodné widgety, které byly definovány pomocí register_sidebar(). Ve tvaru funkce.php jsem umístil výše. Není zde žádná zmínka o "zápatí" s výjimkou vlastností name, id a description. Zdá se mi ale divné, že get_sidebar() by hledalo „zápatí“ uvnitř těchto vlastností.

Má to smysl to, o co se ptám? Je tam nějaký chybějící kousek?

Důvody, proč se ptám, jsou proto, že - chtěl bych se dozvědět více o architektuře WP - rád bych byl schopen definovat vlastní oblast widgetů a umět ji vykreslit na konkrétní stránce.

Díky za tunu.

7
jessegavin

Stačí zavolat get_sidebar() z index.php a načte soubor motivu sidebar.php.

register_sidebar() , na druhé straně, se používá pro widgety, kde pluginy a tak chtějí dynamicky přidávat obsah do vašeho souboru sidebar.php, pokud to váš motiv podporuje.

Existuje ve vašem případě soubor s názvem sidebar-footer.php ve vašem adresáři motivu?

9
john010117

Nikdy jsem se neobtěžoval get_sidebar(). Místo toho používám dynamic_sidebar(). Zavoláte to takto:

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

A to se stará o celý postranní panel. Žádné další inkluze souborů, žádné přeplněné složky motivů. Pokud chci mít 5 různých sidebars, nepřidává žádné soubory, pouze extra funkce v functions.php.

7
John P Bloch

get_sidebar('name') dostane postranní šablonu jména sidebar-name.php.

V rámci sidebar-name.php je HTML pro postranní panel a volání dynamic_sidebar('some-name-hopefully-the-same'), což je místo, kam widgety půjdou.

register_sidebar(array(name=>'some-name-hopefully-the-same', ...)) je to, co umožňuje Dynamic_sidebar pracovat.

Jak vidíte, get_sidebar(templatename) je pro použití s ​​šablonami sidebar. Pokud je nepotřebujete, stačí zavolat dynamic_sidebar(sidebarname) přímo z vašeho tématu.

4
Gerard ONeill

get_sidebar('footer') pokusy načíst sidebar-footer.php z aktivního tématu. Starkers tento soubor poskytuje. Zkontrolujte starkers/sidebar-footer.php a věci by měly být jasné.

3
Annika Backstrom