web-dev-qa-db-fra.com

Enregistrer plusieurs barres latérales

J'enregistre mes barres latérales comme suit:

$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 est le nom de mon widget. Je dois définir sidebar-10 comme identifiant de widget. La même chose avec le reste que dans mon tableau.

Des suggestions pour résoudre ce problème

4
Pieter Goosen

Vous avez juste besoin d'utiliser la syntaxe alternative pour foreach. Du manuel php :

La construction foreach fournit un moyen facile d'itérer sur les tableaux. foreach ne fonctionne que sur les tableaux et les objets et génère une erreur lorsque vous essayez de l'utiliser sur une variable avec un type de données différent ou une variable non initialisée. Il y a deux syntaxes:

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

Pour votre exemple:

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