web-dev-qa-db-ja.com

カスタム関数widgets_initの引数2がありません

カスタムサイドバーを生成するためにカスタマイザからのtheme_mod文字列を使用していますが、それは別の関数から呼び出されます。これは私のコードです:

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は関数ではなく、アクションフックです。そのフックに指定するコールバックはgenerate_sidebarsで、これは2つのパラメータを必要としますが、widgets_initフックはそのコールバックにパラメータを渡しません。

私はあなたがやろうとしているのはこれだと思います:

add_action( 'widgets_init', 'call_sidebar_function' );

これはcall_sidebar_function()関数を呼び出し、それは正しいパラメータでgenerate_sidebars()関数を呼び出します。

4
Nathan Johnson