| 671 | * Set the update hook for a plugin. |
| 672 | * |
| 673 | * Registers the update hook that will be called when the user updates the |
| 674 | * plugin to a newer version than previously installed. |
| 675 | * |
| 676 | * This function performs calls action called update_plugin- suffixed by the name |
| 677 | * of the plugin. Plugins can hook update scripts to this action in order to |
| 678 | * clean up options or extra database tables across versions. |
| 679 | * |
| 680 | * @since 3.1 |
| 681 | * |
| 682 | * @param string $file |
| 683 | * @param callback $callback The function to run when the hook is called. |
| 684 | * @param string $version The version number to which the plugin is updating. |
| 685 | */ |
| 686 | function register_update_hook( $file, $callback, $version ) { |
| 687 | $plugin = plugin_basename( $file ); |
| 688 | |
| 689 | if ( is_plugin_active_for_network( $plugin ) ) { |
| 690 | $current_vers = get_site_option( 'active_plugin_versions', array() ); |
| 691 | $network = true; |
| 692 | } elseif ( is_plugin_active( $plugin ) { |
| 693 | $current_vers = get_option( 'active_plugin_versions', array() ); |
| 694 | $network = false; |
| 695 | } else { |
| 696 | return false; |
| 697 | } |
| 698 | |
| 699 | if ( version_compare( $version, $current_vers[ $plugin ], '>' ) ) { |
| 700 | call_user_func( $callback, $current_vers[ $plugin ], $network ); |
| 701 | |
| 702 | $current_vers[ $plugin ] = $version; |
| 703 | } |
| 704 | |
| 705 | if ( $network ) { |
| 706 | update_site_option( 'active_plugin_versions', $current_vers ); |
| 707 | } else { |
| 708 | update_option( 'active_plugin_versions', $current_vers ); |
| 709 | } |
| 710 | } |
| 711 | |
| 712 | /** |