deactivate_plugins( string|array $plugins, bool $silent = false, mixed $network_wide = null )
Deactivate a single plugin or multiple plugins.
Description Description
The deactivation hook is disabled by the plugin upgrader by using the $silent parameter.
Parameters Parameters
- $plugins
-
(string|array) (Required) Single plugin or list of plugins to deactivate.
- $silent
-
(bool) (Optional) Prevent calling deactivation hooks. Default is false.
Default value: false
- $network_wide
-
(mixed) (Optional) Whether to deactivate the plugin for all sites in the network. A value of null (the default) will deactivate plugins for both the site and the network.
Default value: null
Source Source
File: wp-admin/includes/plugin.php
713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 | function deactivate_plugins( $plugins , $silent = false, $network_wide = null ) { if ( is_multisite() ) { $network_current = get_site_option( 'active_sitewide_plugins' , array () ); } $current = get_option( 'active_plugins' , array () ); $do_blog = $do_network = false; foreach ( ( array ) $plugins as $plugin ) { $plugin = plugin_basename( trim( $plugin ) ); if ( ! is_plugin_active( $plugin ) ) { continue ; } $network_deactivating = false !== $network_wide && is_plugin_active_for_network( $plugin ); if ( ! $silent ) { /** * Fires before a plugin is deactivated. * * If a plugin is silently deactivated (such as during an update), * this hook does not fire. * * @since 2.9.0 * * @param string $plugin Path to the plugin file relative to the plugins directory. * @param bool $network_deactivating Whether the plugin is deactivated for all sites in the network * or just the current site. Multisite only. Default is false. */ do_action( 'deactivate_plugin' , $plugin , $network_deactivating ); } if ( false !== $network_wide ) { if ( is_plugin_active_for_network( $plugin ) ) { $do_network = true; unset( $network_current [ $plugin ] ); } elseif ( $network_wide ) { continue ; } } if ( true !== $network_wide ) { $key = array_search ( $plugin , $current ); if ( false !== $key ) { $do_blog = true; unset( $current [ $key ] ); } } if ( ! $silent ) { /** * Fires as a specific plugin is being deactivated. * * This hook is the "deactivation" hook used internally by register_deactivation_hook(). * The dynamic portion of the hook name, `$plugin`, refers to the plugin basename. * * If a plugin is silently deactivated (such as during an update), this hook does not fire. * * @since 2.0.0 * * @param bool $network_deactivating Whether the plugin is deactivated for all sites in the network * or just the current site. Multisite only. Default is false. */ do_action( "deactivate_{$plugin}" , $network_deactivating ); /** * Fires after a plugin is deactivated. * * If a plugin is silently deactivated (such as during an update), * this hook does not fire. * * @since 2.9.0 * * @param string $plugin Path to the plugin file relative to the plugins directory. * @param bool $network_deactivating Whether the plugin is deactivated for all sites in the network. * or just the current site. Multisite only. Default false. */ do_action( 'deactivated_plugin' , $plugin , $network_deactivating ); } } if ( $do_blog ) { update_option( 'active_plugins' , $current ); } if ( $do_network ) { update_site_option( 'active_sitewide_plugins' , $network_current ); } } |
Expand full source code Collapse full source code View on Trac
Changelog Changelog
Version | Description |
---|---|
2.5.0 | Introduced. |
User Contributed Notes User Contributed Notes
You must log in before being able to contribute a note or feedback.
Example
/**
* Deactivate plugin example class.
*/
class
WPDocs_Deactivate_Plugin {
/**
* Constructor.
*/
public
function
__construct() {
register_activation_hook(
__FILE__
,
array
(
$this
,
'activate'
) );
}
/**
* Attempts to activate the plugin if at least PHP 5.4.
*/
public
function
activate() {
// Check PHP Version and deactivate & die if it doesn't meet minimum requirements.
if
( version_compare( PHP_VERSION,
'5.4'
,
'>='
) ) {
deactivate_plugins( plugin_basename(
__FILE__
) );
wp_die( __(
'This plugin requires PHP Version 5.4 or greater. Sorry about that.'
,
'textdomain'
) );
}
// Do activate Stuff now.
}
}
new
WPDocs_Deactivate_Plugin();
Expand full source codeCollapse full source code