我如何才能检测到选项值已更改?

时间:2014-04-12 作者:Bhavin Toliya

我正在开发一个插件,我想根据每个选项值的变化触发不同的操作。那么我该怎么做呢?示例:

$选项=get\\U选项(“ACP\\U设置”);如果$选项[\'acp-select\']与以前的值相比发生了更改,则我希望根据选择触发不同的操作

请注意,$选项[\'acp-select\']是从select/option html表单中检索的,并具有以下可供选择的值:\'book\'、\'air\'、\'SW\'、\'HW\'等。。。。

我希望我已经把我的问题贴清楚了。

谢谢你的帮助

1 个回复
SO网友:Nick Young

我只是在做类似的事情时遇到了你的问题。我知道我需要什么,所以我想我会在这里发布一个答案,以防其他人发现它有用。

简而言之,我使用了这个过滤器:https://codex.wordpress.org/Plugin_API/Filter_Reference/pre_update_option_(option_name)

它看起来像这样:

function set_admin_notice_options( $new_value, $old_value ) {

    // Check test mode
    if ( $new_value !== $old_value && ! empty( $new_value ) ) {
        update_option( \'some_option_changed\', $new_value );
    }

    return $new_value;
}
add_filter( \'pre_update_option_my_option_name\', \'set_admin_notice_options\', 10, 2 );
使用此方法,如果发现更改,您将保存一个选项。然后,您可以在其他任何地方检查该选项,并使用它执行任何操作,然后删除该选项或执行任何您希望执行的操作。

希望这对您有所帮助。

结束

相关推荐

如何在wp-Options中删除数组中的孤立用户数据

我有一个选项,订阅论坛电子邮件通知的成员。电子邮件列表作为选项值位于一个数组中。一切正常,所有订阅和取消订阅都使用update_option(); 我的问题是,如果一个用户被删除,不进入数据库就很难取消他的订阅。所以我认为这个函数可以做到这一点,但我肯定遗漏了什么:add_action( \'delete_user\', \'forum_remove_deleted_user\' ); function forum_remove_deleted_user($user_id) {