设置API-将选项数组保存为一个设置(ARRAY_PUSH?)

时间:2012-03-08 作者:Wordpressor

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#L95

2。避免选项更新

表单提交后,所有选项都将更新,其值将被$input覆盖。

如果我不想更新其中一个(假设是$typemultiple_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; 
谢谢!

1 个回复
最合适的回答,由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];

结束

相关推荐

wordpress sanitize array?

我有一个自定义的post表单,它将数据发送到使用wp\\u insert\\u post创建post的页面。我可以轻松清理大多数数据,但我的标记有一些问题,我在数组中检索:$tags = $_POST[\'tags\']; 在将这些标记用作tags\\u输入之前,如何成功清理所有名称?谢谢