Skip to content
TGM Plugin Activation is a PHP library that allows you to easily require or recommend plugins for your WordPress themes (and plugins). It allows your users to install, update and even automatically activate plugins in singular or bulk fashion using native WordPress classes, functions and interfaces. You can reference bundled plugins, plugins fro…
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


=== TGM Plugin Activation ===
Contributors:      Thomas Griffin (@jthomasgriffin /
                   Gary Jones (Github: @GaryJones / Twitter: GaryJ)
Version:           2.2.0
Requires at least: 3.0.0
Tested up to:      3.3

== Description ==

This class revolutionizes how plugins can be handled for WordPress themes. By using classes that are
utilized within WordPress, the TGM_Plugin_Activation class can automatically install and activate multiple
plugins that are either packaged with a theme or downloaded from the WordPress Plugin Repository or a private repository.

This class uses the WP_Filesystem Abstraction class to find the best way to install the plugin. WP_Filesystem
searches through a number of methods (Direct, FTP, FTP Sockets, SSH) and determines the best one for use based
on the user's server setup. If FTP is needed, a form will be displayed to prompt users to input their FTP
credentials. To do the installing, this class uses the Plugin_Upgrader and Plugin_Skin_Installer classes to
download, install and activate the plugins. This class also uses WP_Error to display any errors to users
during the plugin installation and activation process.

== Installation ==

1. Drop the class file somewhere in your theme hierarchy.
2. Add a require_once call within functions.php (or other theme file) referencing the class file.
3. Create a function, hooked to `tgmpa_register`, that registers the plugin and configurations.

For steps 2 and 3, it is recommended you view, copy and paste the contents of example.php
and amend to suit. The example.php file is a model for how you should include the class in your theme.

Some important things to note:

1. With the `require_once` call, make sure to amend the path to the correct location within your theme.
2. For plugins pulled from the .org repo, the source argument is optional. Otherwise it is required and should point
   to the absolute path for the plugin zips within your theme, or to a URL for zips elsewhere online.
3. The $config variable holds an array of arguments that can be used to customize aspects of the class.
   If you define an absolute default path for packaged plugins, you do not need to specify the directory path
   for your pre-packaged plugin within the 'source' argument. You will only need to specify the zip file name.

== Feedback ==

See for current issues and for reporting bugs and enhancements.

You can also follow project progress and updates on Twitter. Follow us here at

== Changelog ==

= 2.2.0 =

* Fixed erroneous links for plugins linked to the WordPress Repo
* Improved UI of plugins by listing them in WordPress' default table layout
* Improved support for installing plugins if security credentials require FTP information
* Added 3 new classes (all extensions of existing WordPress classes): TGMPA_List_Table for outputting required/recommended plugins in a familiar table format, TGM_Bulk_Installer for bulk installing plugins and TGM_Bulk_Installer_Skin for skinning the bulk install process
* Added extra defensive measures to prevent duplication of classes
* Added ability to bulk install and bulk activate plugins
* Added two new config options: 'automatic' (whether or not to automatically activate plugins after successful installation) and 'message' (ability to add a custom message before the plugins table)
* Added new string: 'complete' (displayed when all plugins have been successfully installed and activated)
* Removed 'button' string (deprecated with use of plugins table)

= 2.1.2 =

* Fixed erroneous tabbed links with plugins_api for plugins linked from the repository

= 2.1.1 =

* Fixed nag not re-appearing if user switched themes and then re-activated the previous theme (UX improvement)

= 2.1.0 =

* Fixed duplicate nag message on admin options pages
* Fixed FTP nonce error when FTP credentials aren't defined in wp-config.php
* Improved handling of failed FTP connections with WP_Filesystem
* Improved string labeling for semantics
* Improved nag messages so that they are now consolidated into one message
* Improved plugin sorting by listing them alphabetically
* Improved plugin messages after installation and activation
* Added automatic activation of plugins after installation (users no longer need to click the "Activate this plugin" link)
* Added links to repo plugins for their plugin details and information (done via thickbox)
* Added option to dismiss nag message
* Added tgmpa_notice_action_links filter hook to filter nag message action links
* Added new methods: admin_init(), thickbox(), dismiss(), populate_file_path(), _get_plugin_data_from_name() and is_tgmpa_page()

= 2.0.0 =

* Improved nag messages by adding a strings argument to filter default messages
* Improved nag message output by using the Settings API
* Improved internals by adding API for developers to use (code in class no longer has to be touched)
* Improved API function name (now tgmpa) for semantics
* Improved example.php with instructions for setup
* Added internal style sheet for styling
* Added ability to define custom text domain for localization
* Added new properties $default_path and $strings
* Added new methods register(), config(), _get_plugin_basename_from_slug() and actions()
* Removed unnecessary is_wp_error() check

= 1.1.0 =

* Improved property $args to accept arrays of arguments for each plugin needed
* Improved add_submenu_page to add_theme_page
* Improved admin notices to display different messages based on status of plugin (not installed, installed but not activated)
* Improved block-level documentation
* Improved handling of plugin installation and activation with plugins_api, Plugin_Upgrader and Plugin_Skin_Installer
* Added support for multiple plugins of each instance (pre-packaged and repo)
* Added new property $domain to hold textdomain for internationalization
* Added CSS for slight UI enhancements
* Added extra conditional checks current_user_can( 'install_plugins' ) and current_user_can( 'activate_plugins' ) for security
* Removed menu display if all included plugins were successfully installed and activated
* Removed unnecessary conditional check before class is defined

= 1.0.0 =

* Initial release into the wild
Something went wrong with that request. Please try again.