web-dev-qa-db-fra.com

Argument 2 manquant pour une fonction personnalisée widgets_init

J'utilise une chaîne theme_mod de customizer pour générer une barre latérale personnalisée, mais elle est appelée à partir d'une autre fonction. Ceci est mon code:

function call_sidebar_function() {

    if ( get_theme_mod( 'enable_sidebar' ) ) {
        $name = "mySidebarName";
        $numberOfSidebars = get_theme_mod('number_of_sidebars');
        generate_sidebars($name, $numberOfSidebars);
    }
}

function generate_sidebars($name, $numberOfSidebars) {
    $i = 1;
    foreach ($numberOfSidebars as $sidebar) {           
        register_sidebar(
            array(
                'name' => $name.$i,
                'id' => $name.$i,
            )
        );
        $i++;
    }
}
add_action( 'widgets_init', 'generate_sidebars' );
1
Kevin Mamaqi

widgets_init n'est pas une fonction, c'est un crochet d'action. Le rappel que vous spécifiez pour ce hook est generate_sidebars, ce qui nécessite deux paramètres, mais le hook widgets_init ne transmet aucun paramètre à ses rappels.

Je pense que ce que vous essayez de faire est la suivante:

add_action( 'widgets_init', 'call_sidebar_function' );

Qui appellera la fonction call_sidebar_function() qui appellera ensuite la fonction generate_sidebars() avec les paramètres corrects.

4
Nathan Johnson