1。基本设置API回调
使用
Settings API 我的
$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#L952。避免选项更新
表单提交后,所有选项都将更新,其值将被$input覆盖。
如果我不想更新其中一个(假设是$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
}
没有运气。
[edit]
也许这与我保存设置的方式有关(下面返回验证函数)?
$options = get_option(\'XX_theme_settings\');
$valid = array_merge($options,$valid_input);
return $valid;
谢谢!
最合适的回答,由SO网友:kaiser 整理而成
始终使用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];