如何在保存数据前拦截UPDATE_OPTION()?

时间:2015-03-17 作者:Benn

我正在使用redux框架,需要在将主题选项值保存到DB之前将其保存到文件中。有办法拦截吗

update_option()
就在它将数据保存到DB之前?

3 个回复
最合适的回答,由SO网友:DiverseAndRemote.com 整理而成

您最好使用update_option_ 改为操作。这将允许您在更新选项后写入文件(与之前一样)。如果另一个插件挂接到pre\\u update\\u option\\u并在您的插件保存后更改了值,那么您将保存一个不正确的值。

我会使用:

add_action( \'update_option_myoption\', function( $old_value, $new_value ) {
   //Do something with the new value
}, 10, 2);

SO网友:cybmeta

有一个过滤器正好用于此:pre_update_option_{option_name}. 例如,如果“是”选项为“名称”myoption, 你可以使用这样的东西:

add_filter( \'pre_update_option_myoption\', function( $new_value, $old_value ) {

   //Do something before returning the new value to be saved in database

   return $new_value;

}, 10, 2);
参考对象:pre_update_option_(option_name)

这将是一个有用的将军pre_update_option 对于所有选项,但据我所知,这样的过滤器并不存在。

您在选项保存到DB之前询问了要使用的内容,但您可能还对update_option_{option_name} 行动此操作在保存选项后立即启动。请注意update_option_{option_name} 是一个动作,而pre_update_option_{option_name} 是一个过滤器,两者用于不同的用途。基本上(非常基本),行动旨在执行任务,而不是return 价值观过滤器return 值,它们旨在处理或修改数据(尽管没有任何东西阻止您在筛选器中执行任务)。

SO网友:Dovy

在这里领导Redux的开发。您可以使用我们的一个过滤器来满足您的需要:

“redux/validate/{$this->args[\'opt\\u name]}/defaults”-仅在重置默认值时

“redux/validate/{$this->args[\'opt\\u name]}/defaults\\u section”-仅在重置一个节时

“redux/options/{$this->args[\'opt\\u name]}/import”-仅在导入时

“redux/validate/{$this->args[\'opt\\u name]}/before\\u validation”-验证前

“redux/options/{$this->args[\'opt\\u name\']}/validate”-验证后

结束

相关推荐

How many databases do I need?

我被要求为其他人建立另一个网站。最终,我会把它交给他们。我将在本地开发它,然后现场使用,然后移交完全控制权。同时,我需要一个数据库供WP使用。我是将新网站连接到我个人网站已有的现有数据库中,还是每个网站都有一个数据库?我不想把我的数据库和别人的数据库一起导出。