it-swarm.com.de

Wie arbeiten register_sidebar () und get_sidebar () zusammen?

Disclaimer: Ich bin brandneu bei WP.

Ich verwende das Starkers HTML5 Framework Theme . Im functions.php sehe ich diesen Code:

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

Und in footer.php sehe ich diesen Code:

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

Ich verstehe nicht, wie get_sidebar() dieses Zeichenfolgenargument aufgreift und die entsprechenden Widgets findet, die von register_sidebar() definiert wurden. Im functions.php Snippet habe ich oben gepostet. "Footer" wird nur für die Eigenschaften name, id und description erwähnt. Aber es scheint mir seltsam, dass get_sidebar() in diesen Eigenschaften nach 'footer' sucht.

Ist das sinnvoll, was ich frage? Fehlt ein Teil?

Die Gründe, die ich frage, sind folgende: - Ich möchte mehr über die WP Architektur erfahren. - Ich möchte einen benutzerdefinierten Widgetbereich definieren und wissen, wie er auf einer bestimmten Seite gerendert wird.

Danke vielmals.

7
jessegavin

Sie rufen einfach get_sidebar() from index.php auf und es wird die Designdatei sidebar.php geladen.

register_sidebar() wird dagegen für Widgets verwendet, bei denen Plug-ins und solche Inhalte dynamisch in Ihre sidebar.php-Datei einfügen möchten, wenn Ihr Design dies unterstützt.

Gibt es in Ihrem Fall eine Datei mit dem Namen sidebar-footer.php im Verzeichnis Ihres Themas?

9
john010117

Ich habe mich nie mit get_sidebar() beschäftigt. Stattdessen benutze ich einfach dynamic_sidebar(). Sie würden es so nennen:

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

Und das kümmert sich um die ganze Sidebar. Keine weiteren Dateieinschlüsse, keine überfüllten Themenordner. Wenn ich 5 verschiedene Seitenleisten haben möchte, werden keine Dateien hinzugefügt, sondern nur zusätzliche Funktionen in functions.php.

7
John P Bloch

get_sidebar('name') ruft eine Seitenleistenvorlage mit dem Namen sidebar-name.php ab.

In sidebar-name.php gibt es den HTML-Code für die Sidebar und einen Aufruf von dynamic_sidebar('some-name-hopefully-the-same'). Dort werden die Widgets abgelegt.

Mit register_sidebar(array(name=>'some-name-hopefully-the-same', ...)) kann dynamic_sidebar arbeiten.

Wie Sie sehen können, ist get_sidebar(templatename) für die Verwendung mit Sidebar-Vorlagen vorgesehen. Wenn Sie sie nicht benötigen, können Sie dynamic_sidebar(sidebarname) direkt aus Ihrem Thema aufrufen.

4
Gerard ONeill

get_sidebar('footer') versucht, sidebar-footer.php aus dem aktiven Design zu laden. Starkers stellt diese Datei zur Verfügung. Überprüfe starkers/sidebar-footer.php und die Dinge sollten klar werden.

3