it-swarm.com.de

Registrieren Sie mehrere Seitenleisten

Ich registriere meine Seitenleisten wie folgt:

$sidebars = array (
            'sidebar-10'       => 'Main Sidebar',
            'sidebar-11'       => 'Homepage Area One',
            'sidebar-12'       => 'Homepage Area Two',
            'sidebar-13'       => 'Homepage Area Three',
            'sidebar-14'       => 'Homepage Area Four',
            'sidebar-15'       => 'Footer Area One',
            'sidebar-16'       => 'Footer Area Two',
            'sidebar-17'       => 'Footer Area Three',
            'sidebar-18'       => 'Footer Area Four',
            'sidebar-19'       => 'After first post area',
            'sidebar-20'       => 'Below header area',
            );
foreach ( $sidebars as $sidebar ) {
register_sidebar(
    array (
            'name'          => __( $sidebar, 'pietergoosen' ),
            'id'            => $sidebar,
            'before_widget' => '<aside id="%1$s" class="widget %2$s">',
            'after_widget'  => '</aside>',
            'before_title'  => '<h3 class="widget-title">',
            'after_title'   => '</h3>',
    ));
}

Main Sidebar ist der Name meines Widgets. Ich muss sidebar-10 als Widget-ID festlegen. Das selbe mit dem Rest wie in meinem Array.

Irgendwelche Vorschläge zur Lösung dieses Problems

4
Pieter Goosen

Sie müssen nur die alternative Syntax für foreach verwenden. Aus dem PHP-Handbuch :

Das foreach-Konstrukt bietet eine einfache Möglichkeit, Arrays zu durchlaufen. foreach funktioniert nur für Arrays und Objekte und gibt einen Fehler aus, wenn Sie versuchen, es für eine Variable mit einem anderen Datentyp oder eine nicht initialisierte Variable zu verwenden. Es gibt zwei Syntaxen:

foreach (array_expression as $value)
    statement
foreach (array_expression as $key => $value)
    statement

Für Ihr Beispiel:

foreach ( $sidebars as $id => $sidebar) {
register_sidebar(
    array (
            'name'          => __( $sidebar, 'pietergoosen' ),
            'id'            => $id,
            'before_widget' => '<aside id="%1$s" class="widget %2$s">',
            'after_widget'  => '</aside>',
            'before_title'  => '<h3 class="widget-title">',
            'after_title'   => '</h3>',
    ));
}
8
Andrew Bartel