カスタムサイドバーを生成するためにカスタマイザからの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' );
widgets_init
は関数ではなく、アクションフックです。そのフックに指定するコールバックはgenerate_sidebars
で、これは2つのパラメータを必要としますが、widgets_init
フックはそのコールバックにパラメータを渡しません。
私はあなたがやろうとしているのはこれだと思います:
add_action( 'widgets_init', 'call_sidebar_function' );
これはcall_sidebar_function()
関数を呼び出し、それは正しいパラメータでgenerate_sidebars()
関数を呼び出します。