php - 使用 Wordpress 设置 API 存储数组有奇怪的行为
问题描述
我使用 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"
}
}
}
我怎么解决这个问题?
谢谢你。
解决方案
我找到了问题的解决方案。在您的插件激活例程中,您应该使用一个空数组的默认值来初始化您的选项,您可以稍后将您的值附加到该数组中:
if ( ! get_option( 'flat_options' ) ) {
update_option( 'flat_options', array() );
}
然后在您的清理回调中,您可以检查数组的计数并附加到数组:
if (count($output) == 0 ) {
$output[] = $input;
return $output;
}
推荐阅读
- javascript - 在 Javascript 中处理大型数组的最佳方法是什么?
- jasper-reports - JasperReports - 时间序列图表 y 轴上的状态名称
- reactjs - React.memo 应用到 js 箭头函数组件时显示错误
- javascript - 将字符串解析为JS中的对象
- python - Selenium 加载所有帖子然后提取帖子的问题
- r - 计算最佳复利期(加密货币)
- python-3.x - 使用多队列在两个python脚本之间进行通信的方法
- javascript - 暂时突出显示文本
- powershell - 每次都安装 YAML Powershell 安装模块?
- javascript - 如何使用 JS 或节点 JS 从文件中提取片段信息