設定APIの使用 my $ sanitize_callback 検証関数は次のようになります。
(...)
if($type == "foo") {
$valid_input[$id] = $option[$id];
}
else if($type == "bar") {
$valid_input[$id] = wp_filter_nohtml_kses($input[$id]);
}
(...)
Chip Bennettによるこの素晴らしいテーマとほぼ同じです。 https://github.com/chipbennett/oenology/blob/master/functions/options-register.php#L95
フォーム送信後、すべてのオプションが更新され、その値が$ inputで上書きされます。
それらのうちの1つを更新したくない場合($type
がmultiple_settings
であるとしましょう)、代わりに配列を作成し、それに新しいオプションを追加するとどうなりますか?それ、どうやったら出来るの?
私は次のようなことを試していました:
else if($type == "multiple_settings") {
$valid_input[$id][] = $input[$id]; // creates an array but still overwrites
$valid_input[$id] = array_Push($valid_input[$id], $input[$id]); //returns NULL
}
運なしで。
[編集]
たぶんそれは私が私の設定を保存する方法(下記の検証機能のリターン)と関係があるのでしょうか?
$options = get_option('XX_theme_settings');
$valid = array_merge($options,$valid_input);
return $valid;
ありがとうございます。
常にWP_DEBUG
をTRUE
に設定して開発してください。あなたはタイプミスがあります:
array_Push($valid_input[$id], $input[$id];
()
の後にarray_Push
がありません)
配列ではない配列にプッシュすることはできません。
// So, check this before pushing:
$valid_input[$id] = ! is_array( $valid_input[$id] ) ? (array) $valid_input[$id] : $valid_input[$id];