我正在开发一个带有小部件的 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;
虽然这似乎行不通。如果我使用此功能,则不会更新小部件值。所以只是为了测试它是否按照我想要的方式工作......我写了一个工作正常的示例脚本。脚本如下。
$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 中似乎表现不佳。
我在做这件事时意识到的另一件奇怪的事情是
form function 中的 $instance 数组中声明了一些元素,并且更新函数像 $instance 一样更新它们['old'] = $instance['new']; 它工作正常。此外,如果我安装并激活了插件,然后更改更新功能以使用 foreach 循环,它们工作正常。$instance 数组添加更多元素,它们将不会被更新,而之前声明的元素会被更新。我确信我遗漏了一些非常小的东西。非常感谢您的任何帮助或建议。
最佳答案
我找到了一个简单的解决方案:不要在小部件的扩展中包含更新功能。
核心只是默认返回 $new_instance 变量(wp-includes/widgets.php):
function update($new_instance, $old_instance) {
return $new_instance;
}
我已经在我自己的小部件中成功地测试了这一点,并确定制作自己的更新功能对于过滤用户输入很有用,但似乎没有必要。
关于PHP - Wordpress - 插件小部件更新功能 - 更新数组值 [Foreach 循环不工作],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11948682/
我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我脑子里浮现出一些关于一种新编程语言的想法,所以我想我会尝试实现它。一位friend建议我尝试使用Treetop(Rubygem)来创建一个解析器。Treetop的文档很少,我以前从未做过这种事情。我的解析器表现得好像有一个无限循环,但没有堆栈跟踪;事实证明很难追踪到。有人可以指出入门级解析/AST指南的方向吗?我真的需要一些列出规则、常见用法等的东西来使用像Treetop这样的工具。我的语法分析器在GitHub上,以防有人希望帮助我改进它。class{initialize=lambda(name){receiver.name=name}greet=lambda{IO.puts("He
我有多个ActiveRecord子类Item的实例数组,我需要根据最早的事件循环打印。在这种情况下,我需要打印付款和维护日期,如下所示:ItemAmaintenancerequiredin5daysItemBpaymentrequiredin6daysItemApaymentrequiredin7daysItemBmaintenancerequiredin8days我目前有两个查询,用于查找maintenance和payment项目(非排他性查询),并输出如下内容:paymentrequiredin...maintenancerequiredin...有什么方法可以改善上述(丑陋的)代
在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/
我对最新版本的Rails有疑问。我创建了一个新应用程序(railsnewMyProject),但我没有脚本/生成,只有脚本/rails,当我输入ruby./script/railsgeneratepluginmy_plugin"Couldnotfindgeneratorplugin.".你知道如何生成插件模板吗?没有这个命令可以创建插件吗?PS:我正在使用Rails3.2.1和ruby1.8.7[universal-darwin11.0] 最佳答案 随着Rails3.2.0的发布,插件生成器已经被移除。查看变更日志here.现在
我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion在首页我有:汽车:VolvoSaabMercedesAudistatic_pages_spec.rb中的测试代码:it"shouldhavetherightselect"dovisithome_pathit{shouldhave_select('cars',:options=>['volvo','saab','mercedes','audi'])}end响应是rspec./spec/request
在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo
我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("