私は、非常によく似たタイプのさまざまなオプションを使用して、かなり大きくて広範な設定ページを作成しようとしています。
約20の異なるフィールドがあり、それらのほとんどの間の違いは単にそれらのIDであるので、私はそれぞれのために別々のコールバックを作成することを避けたいです。
これらの各フィールドの設定IDの変数でコールバックをすることは可能ですか?そうすることで、1つのコールバックで同じタイプのさまざまな設定フィールドを処理できます。
私はadd_setitngs_feild()に$ argsパラメータを使用してみましたが、残念ながらそれは機能しません。例えば:
add_settings_field('name', 'Field Name', array($this, 'fieldCallback'), 'SettingsGrouP', 'SettingsSection', array("settingID!"));
function fieldCallback($id)
{
echo "<input id='" . $id . "'/>";//etc, etc
}
fieldCallback siが呼び出されていますが、入力のIDが空白です。
add_settings_fields()
に渡すことができる最後のオプションの$args
引数はコールバックに渡されます。だから、あなたはちょうど同じコールバックを使用することができるようです。
2分前にチャットで話し合ったことが原因でこの機会に遭遇したので、私は正しいと思います。 :)
PSはコードを調べましたが、2.9引数が渡されないうちに、比較的最近のものです。
Wordpressがここでコールバック関数に引数を渡す方法は少しトリッキーです。コールバック関数はパラメータとして$args
配列全体を受け取るので、次のように関数を変更することができます。
function fieldCallback(array $args)
{
echo "<input id='" . $args[0] . "'/>";//etc, etc
}
add_settings_field
をそのままにします。
add_settings_field()
関数の最後の(オプションの)引数$args
では、ドキュメントに書かれているようにarray('label_for' => 'something')
を使うことができます( http://codex.wordpress.org/Function_Reference/add_settings_field を参照)。
あなたのフィールドのIDを渡したいのであればそれのために 'label_for'を使用してください:)