uninstall_plugin

The timeline below displays how wordpress function uninstall_plugin has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.1

/**
 * Uninstalls a single plugin.
 *
 * Calls the uninstall hook, if it is available.
 *
 * @since 2.7.0
 *
 * @param string $plugin Path to the plugin file relative to the plugins directory.
 * @return true|void True if a plugin's uninstall.php file has been found and included.
 *                   Void otherwise.
 */
function uninstall_plugin($plugin)
{
    $file = plugin_basename($plugin);
    $uninstallable_plugins = (array) get_option('uninstall_plugins');
    /**
     * Fires in uninstall_plugin() immediately before the plugin is uninstalled.
     *
     * @since 4.5.0
     *
     * @param string $plugin                Path to the plugin file relative to the plugins directory.
     * @param array  $uninstallable_plugins Uninstallable plugins.
     */
    do_action('pre_uninstall_plugin', $plugin, $uninstallable_plugins);
    if (file_exists(WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php')) {
        if (isset($uninstallable_plugins[$file])) {
            unset($uninstallable_plugins[$file]);
            update_option('uninstall_plugins', $uninstallable_plugins);
        }
        unset($uninstallable_plugins);
        define('WP_UNINSTALL_PLUGIN', $file);
        wp_register_plugin_realpath(WP_PLUGIN_DIR . '/' . $file);
        include_once WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php';
        return true;
    }
    if (isset($uninstallable_plugins[$file])) {
        $callable = $uninstallable_plugins[$file];
        unset($uninstallable_plugins[$file]);
        update_option('uninstall_plugins', $uninstallable_plugins);
        unset($uninstallable_plugins);
        wp_register_plugin_realpath(WP_PLUGIN_DIR . '/' . $file);
        include_once WP_PLUGIN_DIR . '/' . $file;
        add_action("uninstall_{$file}", $callable);
        /**
         * Fires in uninstall_plugin() once the plugin has been uninstalled.
         *
         * The action concatenates the 'uninstall_' prefix with the basename of the
         * plugin passed to uninstall_plugin() to create a dynamically-named action.
         *
         * @since 2.7.0
         */
        do_action("uninstall_{$file}");
    }
}

WordPress Version: 5.7

/**
 * Uninstall a single plugin.
 *
 * Calls the uninstall hook, if it is available.
 *
 * @since 2.7.0
 *
 * @param string $plugin Path to the plugin file relative to the plugins directory.
 * @return true|void True if a plugin's uninstall.php file has been found and included.
 *                   Void otherwise.
 */
function uninstall_plugin($plugin)
{
    $file = plugin_basename($plugin);
    $uninstallable_plugins = (array) get_option('uninstall_plugins');
    /**
     * Fires in uninstall_plugin() immediately before the plugin is uninstalled.
     *
     * @since 4.5.0
     *
     * @param string $plugin                Path to the plugin file relative to the plugins directory.
     * @param array  $uninstallable_plugins Uninstallable plugins.
     */
    do_action('pre_uninstall_plugin', $plugin, $uninstallable_plugins);
    if (file_exists(WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php')) {
        if (isset($uninstallable_plugins[$file])) {
            unset($uninstallable_plugins[$file]);
            update_option('uninstall_plugins', $uninstallable_plugins);
        }
        unset($uninstallable_plugins);
        define('WP_UNINSTALL_PLUGIN', $file);
        wp_register_plugin_realpath(WP_PLUGIN_DIR . '/' . $file);
        include_once WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php';
        return true;
    }
    if (isset($uninstallable_plugins[$file])) {
        $callable = $uninstallable_plugins[$file];
        unset($uninstallable_plugins[$file]);
        update_option('uninstall_plugins', $uninstallable_plugins);
        unset($uninstallable_plugins);
        wp_register_plugin_realpath(WP_PLUGIN_DIR . '/' . $file);
        include_once WP_PLUGIN_DIR . '/' . $file;
        add_action("uninstall_{$file}", $callable);
        /**
         * Fires in uninstall_plugin() once the plugin has been uninstalled.
         *
         * The action concatenates the 'uninstall_' prefix with the basename of the
         * plugin passed to uninstall_plugin() to create a dynamically-named action.
         *
         * @since 2.7.0
         */
        do_action("uninstall_{$file}");
    }
}

WordPress Version: 5.5

/**
 * Uninstall a single plugin.
 *
 * Calls the uninstall hook, if it is available.
 *
 * @since 2.7.0
 *
 * @param string $plugin Path to the plugin file relative to the plugins directory.
 * @return true True if a plugin's uninstall.php file has been found and included.
 */
function uninstall_plugin($plugin)
{
    $file = plugin_basename($plugin);
    $uninstallable_plugins = (array) get_option('uninstall_plugins');
    /**
     * Fires in uninstall_plugin() immediately before the plugin is uninstalled.
     *
     * @since 4.5.0
     *
     * @param string $plugin                Path to the plugin file relative to the plugins directory.
     * @param array  $uninstallable_plugins Uninstallable plugins.
     */
    do_action('pre_uninstall_plugin', $plugin, $uninstallable_plugins);
    if (file_exists(WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php')) {
        if (isset($uninstallable_plugins[$file])) {
            unset($uninstallable_plugins[$file]);
            update_option('uninstall_plugins', $uninstallable_plugins);
        }
        unset($uninstallable_plugins);
        define('WP_UNINSTALL_PLUGIN', $file);
        wp_register_plugin_realpath(WP_PLUGIN_DIR . '/' . $file);
        include_once WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php';
        return true;
    }
    if (isset($uninstallable_plugins[$file])) {
        $callable = $uninstallable_plugins[$file];
        unset($uninstallable_plugins[$file]);
        update_option('uninstall_plugins', $uninstallable_plugins);
        unset($uninstallable_plugins);
        wp_register_plugin_realpath(WP_PLUGIN_DIR . '/' . $file);
        include_once WP_PLUGIN_DIR . '/' . $file;
        add_action("uninstall_{$file}", $callable);
        /**
         * Fires in uninstall_plugin() once the plugin has been uninstalled.
         *
         * The action concatenates the 'uninstall_' prefix with the basename of the
         * plugin passed to uninstall_plugin() to create a dynamically-named action.
         *
         * @since 2.7.0
         */
        do_action("uninstall_{$file}");
    }
}

WordPress Version: 5.1

/**
 * Uninstall a single plugin.
 *
 * Calls the uninstall hook, if it is available.
 *
 * @since 2.7.0
 *
 * @param string $plugin Path to the plugin file relative to the plugins directory.
 * @return true True if a plugin's uninstall.php file has been found and included.
 */
function uninstall_plugin($plugin)
{
    $file = plugin_basename($plugin);
    $uninstallable_plugins = (array) get_option('uninstall_plugins');
    /**
     * Fires in uninstall_plugin() immediately before the plugin is uninstalled.
     *
     * @since 4.5.0
     *
     * @param string $plugin                Path to the plugin file relative to the plugins directory.
     * @param array  $uninstallable_plugins Uninstallable plugins.
     */
    do_action('pre_uninstall_plugin', $plugin, $uninstallable_plugins);
    if (file_exists(WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php')) {
        if (isset($uninstallable_plugins[$file])) {
            unset($uninstallable_plugins[$file]);
            update_option('uninstall_plugins', $uninstallable_plugins);
        }
        unset($uninstallable_plugins);
        define('WP_UNINSTALL_PLUGIN', $file);
        wp_register_plugin_realpath(WP_PLUGIN_DIR . '/' . $file);
        include WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php';
        return true;
    }
    if (isset($uninstallable_plugins[$file])) {
        $callable = $uninstallable_plugins[$file];
        unset($uninstallable_plugins[$file]);
        update_option('uninstall_plugins', $uninstallable_plugins);
        unset($uninstallable_plugins);
        wp_register_plugin_realpath(WP_PLUGIN_DIR . '/' . $file);
        include WP_PLUGIN_DIR . '/' . $file;
        add_action("uninstall_{$file}", $callable);
        /**
         * Fires in uninstall_plugin() once the plugin has been uninstalled.
         *
         * The action concatenates the 'uninstall_' prefix with the basename of the
         * plugin passed to uninstall_plugin() to create a dynamically-named action.
         *
         * @since 2.7.0
         */
        do_action("uninstall_{$file}");
    }
}

WordPress Version: 4.8

/**
 * Uninstall a single plugin.
 *
 * Calls the uninstall hook, if it is available.
 *
 * @since 2.7.0
 *
 * @param string $plugin Path to the main plugin file from plugins directory.
 * @return true True if a plugin's uninstall.php file has been found and included.
 */
function uninstall_plugin($plugin)
{
    $file = plugin_basename($plugin);
    $uninstallable_plugins = (array) get_option('uninstall_plugins');
    /**
     * Fires in uninstall_plugin() immediately before the plugin is uninstalled.
     *
     * @since 4.5.0
     *
     * @param string $plugin                Path to the main plugin file from plugins directory.
     * @param array  $uninstallable_plugins Uninstallable plugins.
     */
    do_action('pre_uninstall_plugin', $plugin, $uninstallable_plugins);
    if (file_exists(WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php')) {
        if (isset($uninstallable_plugins[$file])) {
            unset($uninstallable_plugins[$file]);
            update_option('uninstall_plugins', $uninstallable_plugins);
        }
        unset($uninstallable_plugins);
        define('WP_UNINSTALL_PLUGIN', $file);
        wp_register_plugin_realpath(WP_PLUGIN_DIR . '/' . $file);
        include WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php';
        return true;
    }
    if (isset($uninstallable_plugins[$file])) {
        $callable = $uninstallable_plugins[$file];
        unset($uninstallable_plugins[$file]);
        update_option('uninstall_plugins', $uninstallable_plugins);
        unset($uninstallable_plugins);
        wp_register_plugin_realpath(WP_PLUGIN_DIR . '/' . $file);
        include WP_PLUGIN_DIR . '/' . $file;
        add_action("uninstall_{$file}", $callable);
        /**
         * Fires in uninstall_plugin() once the plugin has been uninstalled.
         *
         * The action concatenates the 'uninstall_' prefix with the basename of the
         * plugin passed to uninstall_plugin() to create a dynamically-named action.
         *
         * @since 2.7.0
         */
        do_action("uninstall_{$file}");
    }
}

WordPress Version: 4.6

/**
 * Uninstall a single plugin.
 *
 * Calls the uninstall hook, if it is available.
 *
 * @since 2.7.0
 *
 * @param string $plugin Relative plugin path from Plugin Directory.
 * @return true True if a plugin's uninstall.php file has been found and included.
 */
function uninstall_plugin($plugin)
{
    $file = plugin_basename($plugin);
    $uninstallable_plugins = (array) get_option('uninstall_plugins');
    /**
     * Fires in uninstall_plugin() immediately before the plugin is uninstalled.
     *
     * @since 4.5.0
     *
     * @param string $plugin                Relative plugin path from plugin directory.
     * @param array  $uninstallable_plugins Uninstallable plugins.
     */
    do_action('pre_uninstall_plugin', $plugin, $uninstallable_plugins);
    if (file_exists(WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php')) {
        if (isset($uninstallable_plugins[$file])) {
            unset($uninstallable_plugins[$file]);
            update_option('uninstall_plugins', $uninstallable_plugins);
        }
        unset($uninstallable_plugins);
        define('WP_UNINSTALL_PLUGIN', $file);
        wp_register_plugin_realpath(WP_PLUGIN_DIR . '/' . $file);
        include WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php';
        return true;
    }
    if (isset($uninstallable_plugins[$file])) {
        $callable = $uninstallable_plugins[$file];
        unset($uninstallable_plugins[$file]);
        update_option('uninstall_plugins', $uninstallable_plugins);
        unset($uninstallable_plugins);
        wp_register_plugin_realpath(WP_PLUGIN_DIR . '/' . $file);
        include WP_PLUGIN_DIR . '/' . $file;
        add_action('uninstall_' . $file, $callable);
        /**
         * Fires in uninstall_plugin() once the plugin has been uninstalled.
         *
         * The action concatenates the 'uninstall_' prefix with the basename of the
         * plugin passed to uninstall_plugin() to create a dynamically-named action.
         *
         * @since 2.7.0
         */
        do_action('uninstall_' . $file);
    }
}

WordPress Version: 4.5

/**
 * Uninstall a single plugin.
 *
 * Calls the uninstall hook, if it is available.
 *
 * @since 2.7.0
 *
 * @param string $plugin Relative plugin path from Plugin Directory.
 * @return true True if a plugin's uninstall.php file has been found and included.
 */
function uninstall_plugin($plugin)
{
    $file = plugin_basename($plugin);
    $uninstallable_plugins = (array) get_option('uninstall_plugins');
    /**
     * Fires in uninstall_plugin() immediately before the plugin is uninstalled.
     *
     * @since 4.5.0
     *
     * @param string $plugin                Relative plugin path from plugin directory.
     * @param array  $uninstallable_plugins Uninstallable plugins.
     */
    do_action('pre_uninstall_plugin', $plugin, $uninstallable_plugins);
    if (file_exists(WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php')) {
        if (isset($uninstallable_plugins[$file])) {
            unset($uninstallable_plugins[$file]);
            update_option('uninstall_plugins', $uninstallable_plugins);
        }
        unset($uninstallable_plugins);
        define('WP_UNINSTALL_PLUGIN', $file);
        wp_register_plugin_realpath(WP_PLUGIN_DIR . '/' . dirname($file));
        include WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php';
        return true;
    }
    if (isset($uninstallable_plugins[$file])) {
        $callable = $uninstallable_plugins[$file];
        unset($uninstallable_plugins[$file]);
        update_option('uninstall_plugins', $uninstallable_plugins);
        unset($uninstallable_plugins);
        wp_register_plugin_realpath(WP_PLUGIN_DIR . '/' . $file);
        include WP_PLUGIN_DIR . '/' . $file;
        add_action('uninstall_' . $file, $callable);
        /**
         * Fires in uninstall_plugin() once the plugin has been uninstalled.
         *
         * The action concatenates the 'uninstall_' prefix with the basename of the
         * plugin passed to {@see uninstall_plugin()} to create a dynamically-named action.
         *
         * @since 2.7.0
         */
        do_action('uninstall_' . $file);
    }
}

WordPress Version: 4.3

/**
 * Uninstall a single plugin.
 *
 * Calls the uninstall hook, if it is available.
 *
 * @since 2.7.0
 *
 * @param string $plugin Relative plugin path from Plugin Directory.
 * @return true True if a plugin's uninstall.php file has been found and included.
 */
function uninstall_plugin($plugin)
{
    $file = plugin_basename($plugin);
    $uninstallable_plugins = (array) get_option('uninstall_plugins');
    if (file_exists(WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php')) {
        if (isset($uninstallable_plugins[$file])) {
            unset($uninstallable_plugins[$file]);
            update_option('uninstall_plugins', $uninstallable_plugins);
        }
        unset($uninstallable_plugins);
        define('WP_UNINSTALL_PLUGIN', $file);
        wp_register_plugin_realpath(WP_PLUGIN_DIR . '/' . dirname($file));
        include WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php';
        return true;
    }
    if (isset($uninstallable_plugins[$file])) {
        $callable = $uninstallable_plugins[$file];
        unset($uninstallable_plugins[$file]);
        update_option('uninstall_plugins', $uninstallable_plugins);
        unset($uninstallable_plugins);
        wp_register_plugin_realpath(WP_PLUGIN_DIR . '/' . $file);
        include WP_PLUGIN_DIR . '/' . $file;
        add_action('uninstall_' . $file, $callable);
        /**
         * Fires in uninstall_plugin() once the plugin has been uninstalled.
         *
         * The action concatenates the 'uninstall_' prefix with the basename of the
         * plugin passed to {@see uninstall_plugin()} to create a dynamically-named action.
         *
         * @since 2.7.0
         */
        do_action('uninstall_' . $file);
    }
}

WordPress Version: 3.9

/**
 * Uninstall a single plugin.
 *
 * Calls the uninstall hook, if it is available.
 *
 * @since 2.7.0
 *
 * @param string $plugin Relative plugin path from Plugin Directory.
 */
function uninstall_plugin($plugin)
{
    $file = plugin_basename($plugin);
    $uninstallable_plugins = (array) get_option('uninstall_plugins');
    if (file_exists(WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php')) {
        if (isset($uninstallable_plugins[$file])) {
            unset($uninstallable_plugins[$file]);
            update_option('uninstall_plugins', $uninstallable_plugins);
        }
        unset($uninstallable_plugins);
        define('WP_UNINSTALL_PLUGIN', $file);
        wp_register_plugin_realpath(WP_PLUGIN_DIR . '/' . dirname($file));
        include WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php';
        return true;
    }
    if (isset($uninstallable_plugins[$file])) {
        $callable = $uninstallable_plugins[$file];
        unset($uninstallable_plugins[$file]);
        update_option('uninstall_plugins', $uninstallable_plugins);
        unset($uninstallable_plugins);
        wp_register_plugin_realpath(WP_PLUGIN_DIR . '/' . $file);
        include WP_PLUGIN_DIR . '/' . $file;
        add_action('uninstall_' . $file, $callable);
        /**
         * Fires in uninstall_plugin() once the plugin has been uninstalled.
         *
         * The action concatenates the 'uninstall_' prefix with the basename of the
         * plugin passed to {@see uninstall_plugin()} to create a dynamically-named action.
         *
         * @since 2.7.0
         */
        do_action('uninstall_' . $file);
    }
}

WordPress Version: 3.7

/**
 * Uninstall a single plugin.
 *
 * Calls the uninstall hook, if it is available.
 *
 * @since 2.7.0
 *
 * @param string $plugin Relative plugin path from Plugin Directory.
 */
function uninstall_plugin($plugin)
{
    $file = plugin_basename($plugin);
    $uninstallable_plugins = (array) get_option('uninstall_plugins');
    if (file_exists(WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php')) {
        if (isset($uninstallable_plugins[$file])) {
            unset($uninstallable_plugins[$file]);
            update_option('uninstall_plugins', $uninstallable_plugins);
        }
        unset($uninstallable_plugins);
        define('WP_UNINSTALL_PLUGIN', $file);
        include WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php';
        return true;
    }
    if (isset($uninstallable_plugins[$file])) {
        $callable = $uninstallable_plugins[$file];
        unset($uninstallable_plugins[$file]);
        update_option('uninstall_plugins', $uninstallable_plugins);
        unset($uninstallable_plugins);
        include WP_PLUGIN_DIR . '/' . $file;
        add_action('uninstall_' . $file, $callable);
        /**
         * Fires in uninstall_plugin() once the plugin has been uninstalled.
         *
         * The action concatenates the 'uninstall_' prefix with the basename of the
         * plugin passed to {@see uninstall_plugin()} to create a dynamically-named action.
         *
         * @since 2.7.0
         */
        do_action('uninstall_' . $file);
    }
}