使用Wordpress设置API存储数组具有奇怪的行为

问题描述 投票:0回答:2

我使用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"
      }
  }
}

我该如何解决这个问题?

谢谢。

php wordpress
2个回答
0
投票

看到您的update_option函数调用会很有用。你那里可能有这样的东西吗? update_option('flat_option', [$input]);吗?

知道以后如何查询和输出选项也是很好的。


0
投票

我找到了解决问题的方法。在您的插件激活例程中,您应该使用一个空数组的默认值初始化您的选项,以后可以将其附加到该空数组:

    if ( ! get_option( 'flat_options' ) ) {
        update_option( 'flat_options', array() );
    }

然后在清理回调中,您可以检查数组的计数并追加到数组:

if (count($output) == 0 ) {
  $output[] = $input;
  return $output;
}
© www.soinside.com 2019 - 2024. All rights reserved.