I have a plugin which is dependent on another plugin, in this case WooCommerce.
How can I stop the activation of my plugin and display an admin notice with download link of the dependent plugin, if the version of the dependent plugin is lower than a certain version?
In short, on the activation process my plugin should not be activated and display a notice with download link when any of the following is true:
- WooCommerce plugin is not activated (I have solution for this)
- The version of WooCommerce plugin is less than a certain version
(I do not have solution for this)
Note: This question is answering my question partially, but I need to have a full solution to check the version of the dependent plugin and display admin notice accordingly.
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
You can add the following code in your plugin. I have used this in my ARB booking plugin and it worked perfectly. The full details of the code with explanation can be found here:
class FT_AdminNotice { protected $min_wc = '5.0.0'; //replace '5.0.0' with your dependent plugin version number /** * Register the activation hook */ public function __construct() { register_activation_hook( __FILE__, array( $this, 'ft_install' ) ); } /** * Check the dependent plugin version */ protected function ft_is_wc_compatible() { return defined( 'WC_VERSION' ) && version_compare( WC_VERSION, $this->min_wc, '>=' ); } /** * Function to deactivate the plugin */ protected function ft_deactivate_plugin() { require_once( ABSPATH . 'wp-admin/includes/plugin.php' ); deactivate_plugins( plugin_basename( __FILE__ ) ); if ( isset( $_GET['activate'] ) ) { unset( $_GET['activate'] ); } } /** * Deactivate the plugin and display a notice if the dependent plugin is not compatible or not active. */ public function ft_install() { if ( ! $this->ft_is_wc_compatible() || ! class_exists( 'WooCommerce' ) ) { $this->ft_deactivate_plugin(); wp_die( 'Could not be activated. ' . $this->get_ft_admin_notices() ); } else { //do your fancy staff here } } /** * Writing the admin notice */ protected function get_ft_admin_notices() { return sprintf( '%1$s requires WooCommerce version %2$s or higher installed and active. You can download WooCommerce latest version %3$s OR go back to %4$s.', '<strong>' . $this->plugin_name . '</strong>', $this->min_wc, '<strong><a href="https://downloads.wordpress.org/plugin/woocommerce.latest-stable.zip">from here</a></strong>', '<strong><a href="' . esc_url( admin_url( 'plugins.php' ) ) . '">plugins page</a></strong>' ); } } new FT_AdminNotice();
You will get admin notice like this when your plugin is activated without the Dependent plugin’s desired version:
You see the admin notice has the download link of the dependent plugin and also the user can get back to the plugins page by clicking on the plugins page link.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0