PHP – WordPress – 插件小部件更新功能 – 更新数组值[Foreach循环不工作]
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP – WordPress – 插件小部件更新功能 – 更新数组值[Foreach循环不工作],小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1923字,纯文字阅读大概需要3分钟。
内容图文
![PHP – WordPress – 插件小部件更新功能 – 更新数组值[Foreach循环不工作]](/upload/InfoBanner/zyjiaocheng/721/69eeac44b17d4e4e9e1472c128386839.jpg)
我正在开发一个带有小部件的wordpress插件.目前,小部件的更新功能如下所示.
function update($new, $old){
$instance = $old;
//Update Values
$instance['element-one'] = $new['element-one'];
$instance['element-two'] = $new['element-two'];
$instance['element-three'] = $new['element-three'];
$instance['element-four'] = $new['element-four'];
//Return New Instance
return $instance;
这应该是应该的.但我有一长串的元素,为了清洁代码我试图用一个简单的功能实现它们如下:
function update($new, $old){
$instance = $old;
//Update Values
foreach($instance as $k => $v){
$instance[$k] = $new[$k];
}
//Return New Instance
return $instance;
虽然这似乎不起作用.如果我使用此功能,则不会更新Widget值.所以只是为了测试它是否按照我想要的方式工作……我写了一个工作正常的示例脚本.脚本如下.
$a = array(
'a' => '1',
'b' => '2',
'c' => '3'
);
$b = array(
'a' => 'A',
'b' => 'B',
'c' => 'C'
);
function swap_values($old, $new){
$result = $old;
foreach($result as $k => $v){
$result[$k] = $new[$k];
}
return $result;
}
$res = swap_values($a, $b);
var_dump($res);
这个脚本工作正常,它交换数组的值,但似乎由于某种原因这在wordpress中表现不佳.
我在研究这个问题时意识到的另一个奇怪的事情是
>假设我在窗口小部件的窗体函数中的$instance数组中声明了一些元素,并且更新函数正在更新它们,如$instance [‘old’] = $instance [‘new’];它工作正常.此外,如果我已安装并激活插件,然后我更改更新功能以使用foreach循环,他们工作正常.
>但是在我更改了更新函数以使用foreach循环之后,如果我将更多元素添加到$instance数组,则它们不会被更新,而之前声明的元素是.
>另外,如果我在单独的wordpress安装上安装并激活此插件[更新更新函数以使用foreach循环]后,似乎没有任何元素更新.
我确信有一些我很想念的东西.非常感谢您的任何帮助或建议.
解决方法:
我找到了一个简单的解决方案:不要在小部件的扩展中包含更新功能.
核心只是将$new_instance变量作为默认值返回(wp-includes / widgets.php):
function update($new_instance, $old_instance) {
return $new_instance;
}
我已经在我自己的小部件中成功测试了这一点,并确定制作自己的更新功能对于过滤用户输入很有用,但似乎没有必要.
内容总结
以上是互联网集市为您收集整理的PHP – WordPress – 插件小部件更新功能 – 更新数组值[Foreach循环不工作]全部内容,希望文章能够帮你解决PHP – WordPress – 插件小部件更新功能 – 更新数组值[Foreach循环不工作]所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。