在保存插件设置页面的过程中,使用哪个选项来执行代码?

时间:2012-01-07 作者:Manny Fleurmond

我正在编写一个带有设置/选项页面的插件,我希望每当有人保存该页面和单独保存该页面上的设置时,都能执行一些php代码。要实现这一点,我需要采取哪些行动?

2 个回复
最合适的回答,由SO网友:Anh Tran 整理而成

如果您正在使用Settings API, 然后应使用清理回调:

register_setting( $option_group, $option_name, $sanitize_callback );
神话是$sanitize_callback 实际上,当它保存在数据库中时,它是您选项的过滤器。这是您可以使用自定义代码进行操作的地方。

以下是示例代码:

register_setting( \'wpse38180\', \'wpse38180\', \'sanitize_wpse38180\' );

function sanitize_wpse38180( $options )
{
    // Do anything you want

    return $options;
}

SO网友:Bennett McElwee

There is a pre-update filter, 仅在消毒过滤器之后应用。它被称为pre\\u update\\u option\\uOptionName,并将选项的新值和旧值作为参数。使用方法如下:

register_setting( $my_option_group , $my_option_name );
// 10 is the filter priority, 2 is the number of arguments
add_filter( \'pre_update_option_\' . $my_option_name , \'my_callback\', 10, 2 );

function my_callback( $newvalue, $oldvalue ) {
    // $newvalue has already been sanitized, but not yet saved
    // do whatever you like here
    return \'filtered value\';
}
使用此选项的好处是意图更加明确,并且您不必手动获取旧的选项值(如果需要的话),因为它是为您传入的。

此筛选器特定于某个字段,因此,如果希望在保存选项时只运行一次,只需将其添加到一个字段即可。

结束

相关推荐

Custom Post Row Actions

我偶然发现this question 在写这个问题的时候。我有一个问题是关于这个问题的。我发现你用的是get_delete_post_link 筛选为我的操作创建一个新的url(或一个类似的函数——在任何情况下,我都会将该函数与布尔值一起使用)。唯一的问题是,I don\'t know how to capture the event now. 考虑到我在谷歌上找不到很多关于行后操作的例子,我将不胜感激-/public function _wp_filter_get_delete_post_link( $