The register_deactivation_hook() WordPress PHP function sets the deactivation hook for a plugin.
Usage
register_deactivation_hook( string $file, callable $callback );
Example:
register_deactivation_hook( __FILE__, 'my_plugin_deactivate' );
Parameters
$file(string) – The filename of the plugin, including the path.$callback(callable) – The function hooked to the ‘deactivate_PLUGIN’ action.
More information
See WordPress Developer Resources: register_deactivation_hook
Examples
Basic Plugin Deactivation
This example demonstrates how to call the my_plugin_deactivate function when the plugin is deactivated.
function my_plugin_deactivate() {
// Your deactivation logic here
}
register_deactivation_hook( __FILE__, 'my_plugin_deactivate' );
Plugin Deactivation with Namespace
This example demonstrates how to use the register_deactivation_hook function with a namespace.
namespace MyNamespace;
function deactivate_plugin() {
// Your deactivation logic here
}
register_deactivation_hook( __FILE__, __NAMESPACE__ . '\\deactivate_plugin' );
Clearing Transients on Deactivation
This example demonstrates how to clear transients when the plugin is deactivated.
function clear_plugin_transients() {
delete_transient( 'my_plugin_transient_key' );
}
register_deactivation_hook( __FILE__, 'clear_plugin_transients' );
Removing Custom Database Table
This example demonstrates how to remove a custom database table when the plugin is deactivated.
function remove_custom_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'my_custom_table';
$wpdb->query( "DROP TABLE IF EXISTS {$table_name}" );
}
register_deactivation_hook( __FILE__, 'remove_custom_table' );
Removing Custom Post Type
This example demonstrates how to remove a custom post type when the plugin is deactivated.
function remove_custom_post_type() {
unregister_post_type( 'my_custom_post_type' );
flush_rewrite_rules();
}
register_deactivation_hook( __FILE__, 'remove_custom_post_type' );