我使用Wordpress设置API为我的插件存储一些设置。用户可以放置一些有关单位的信息(例如大小,高度等)。在我的设置中,清理回调我想创建一个数组,因为用户可以存储多个单位。这是我的回调函数。如果该选项不存在,则会创建一个新数组。如果已经存在,则将新单位附加到数组。
public function flatSanitize($input) {
echo '<pre>';
var_dump($input);
echo '</pre>';
$output = get_option('flat_option');
if ( !$output ) {
$output = array(
$input
);
echo '<br><pre>';
var_dump($output);
echo '</pre>';
die();
return $output;
}
$output[] = array($input);
return $output;
}
此脚本的输出正确:
输入:
array(5) {
["squaremeter"]=> string(2) "50"
["level"] => string(9) "1st floor"
}
输出:
array(1) {
[0]=>
array(5) {
["squaremeter"] => string(2) "50"
["level"]=> string(9) "1st floor"
}
}
但是如果我将选项放入数据库中,然后稍后通过get_option('flat_option')查询它,这就是我得到的:
array(1) {
[0]=>
array(1) {
[0]=>
array(5) {
["squaremeter"] => string(2) "50"
["level"]=> string(9) "1st floor"
}
}
}
如您所见,它总是在数组中放置另一个级别。我无法控制这种行为。对于另一个选项,它总是将其再次放入另一个数组,并为此数组使用一个空的“”键,如下所示:
array(1) {
"" =>
array(1) {
[0]=>
array(5) {
["squaremeter"] => string(2) "50"
["level"]=> string(9) "1st floor"
}
}
}
我该如何解决这个问题?
谢谢。
看到您的update_option函数调用会很有用。你那里可能有这样的东西吗? update_option('flat_option', [$input]);
吗?
知道以后如何查询和输出选项也是很好的。
我找到了解决问题的方法。在您的插件激活例程中,您应该使用一个空数组的默认值初始化您的选项,以后可以将其附加到该空数组:
if ( ! get_option( 'flat_options' ) ) {
update_option( 'flat_options', array() );
}
然后在清理回调中,您可以检查数组的计数并追加到数组:
if (count($output) == 0 ) {
$output[] = $input;
return $output;
}