The register_uninstall_hook() WordPress PHP function sets the uninstallation hook for a plugin.
Usage
register_uninstall_hook( __FILE__, 'my_plugin_uninstall' );
Parameters
$file(string) – Required. The plugin file.$callback(callable) – Required. The callback to run when the hook is called. Must be a static method or function.
More information
See WordPress Developer Resources: register_uninstall_hook()
Examples
Basic Uninstall Hook
Register an uninstall hook when the plugin is activated:
function my_plugin_activate() {
register_uninstall_hook( __FILE__, 'my_plugin_uninstall' );
}
register_activation_hook( __FILE__, 'my_plugin_activate' );
function my_plugin_uninstall() {
// Code to perform during uninstallation
}
Delete Options on Uninstall
Delete plugin options when the plugin is uninstalled:
function my_plugin_uninstall() {
delete_option('my_plugin_option');
}
register_uninstall_hook( __FILE__, 'my_plugin_uninstall' );
Remove Custom Post Type on Uninstall
Remove all posts of a custom post type when the plugin is uninstalled:
function my_plugin_uninstall() {
$posts = get_posts( array(
'post_type' => 'my_custom_post_type',
'numberposts' => -1,
'post_status' => 'any'
));
foreach ( $posts as $post ) {
wp_delete_post( $post->ID, true );
}
}
register_uninstall_hook( __FILE__, 'my_plugin_uninstall' );
Remove Custom Taxonomy Terms on Uninstall
Remove all terms of a custom taxonomy when the plugin is uninstalled:
function my_plugin_uninstall() {
$terms = get_terms( array(
'taxonomy' => 'my_custom_taxonomy',
'hide_empty' => false,
));
foreach ( $terms as $term ) {
wp_delete_term( $term->term_id, 'my_custom_taxonomy' );
}
}
register_uninstall_hook( __FILE__, 'my_plugin_uninstall' );
Remove Custom Database Table on Uninstall
Drop a custom database table when the plugin is uninstalled:
function my_plugin_uninstall() {
global $wpdb;
$table_name = $wpdb->prefix . 'my_custom_table';
$wpdb->query( "DROP TABLE IF EXISTS {$table_name}" );
}
register_uninstall_hook( __FILE__, 'my_plugin_uninstall' );