为什么小部件更新功能需要$OLD_INSTANCE?

时间:2014-05-22 作者:Yoav Kadosh

在函数的PHPdoc中WP_Widget::update() 位于以下位置wp-includes/widgets.php 上面说:

/**
 * ...
 * This function should check that $new_instance is set correctly.
 * The newly calculated value of $instance should be returned.
 * If "false" is returned, the instance won\'t be saved/updated.
 * ...
 */
我不清楚为什么$old_instance 更新值时需要,以及如何使用它来验证$new_instance 设置正确。

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

正如注释所述,您应该验证新实例的值。如果其中一个值无效,会发生什么情况?您可以设置预定义的默认值,也可以使用旧实例中的值,因为该值必须有效。

因此,一个非常简单的更新代码可以如下所示:

function update( $new_instance, $old_instance )
{
    return array_merge( $old_instance, $new_instance );
}
没有更好的方法来获取这些信息,所以WordPress只是在您需要时传递它。但你可以完全无视它。

结束

相关推荐

Individual Widgets per Page

在我的Wordpress网站(仅限于页面,无帖子)中,我需要在侧边栏中放置一些静态blob。我们可以将这些“blob”称为小部件。至少他们会有一个固定的html内容,如“摘要1”、“摘要2”、“免责声明”、“foo策略”。。。我需要的是,在每一页上都有不同的安排。因此,这不仅仅是“单一”对“归档”,而是真正的“产品页面A”对“产品页面B”对“关于我们”对“服务条款”。。。我在考虑自定义元框,以便在单个编辑器页面上打开和关闭它们wp-admin/post.php?post=196&action=ed