When you write a WordPress plugin, you can specify a minimum WordPress version that your code is compatible with, using the “Requires” option in your plugin header, but it isn’t enforced. Along with that, there’s no way to specify a minimum version of PHP or MySQL.
This can cause your users to have bad experiences with your plugin, and you’ll get bad ratings.
So, here’s how I make sure my plugins are only activated when I want them to be.
// In this example, only allow activation on WordPress 3.7 or higher class MyPlugin { function __construct() { add_action( 'admin_init', array( $this, 'check_version' ) ); // Don't run anything else in the plugin, if we're on an incompatible WordPress version if ( ! self::compatible_version() ) { return; } } // The primary sanity check, automatically disable the plugin on activation if it doesn't // meet minimum requirements. static function activation_check() { if ( ! self::compatible_version() ) { deactivate_plugins( plugin_basename( __FILE__ ) ); wp_die( __( 'My Plugin requires WordPress 3.7 or higher!', 'my-plugin' ) ); } } // The backup sanity check, in case the plugin is activated in a weird way, // or the versions change after activation. function check_version() { if ( ! self::compatible_version() ) { if ( is_plugin_active( plugin_basename( __FILE__ ) ) ) { deactivate_plugins( plugin_basename( __FILE__ ) ); add_action( 'admin_notices', array( $this, 'disabled_notice' ) ); if ( isset( $_GET['activate'] ) ) { unset( $_GET['activate'] ); } } } } function disabled_notice() { echo '<strong>' . esc_html__( 'My Plugin requires WordPress 3.7 or higher!', 'my-plugin' ) . '</strong>'; } static function compatible_version() { if ( version_compare( $GLOBALS['wp_version'], '3.7', '<' ) ) { return false; } // Add sanity checks for other version requirements here return true; } } global $myplugin; $myplugin = new MyPlugin(); register_activation_hook( __FILE__, array( 'MyPlugin', 'activation_check' ) );
It’s only a little extra code when added to a plugin, provides complete protection, and won’t cause any weirdness on the front end of your site, it’ll just deactivate itself either on activation, or when someone visits wp-admin.
Hi,
You have this Wp pluggin name ‘Job Manager’ does it have this code?
It’s labeled as ‘Requires: 2.9 or higher’.
A friend of mine installed it and he told me it was working perfect; recently after he gave the site to his client, the site stoped to show the information for every job entry.
I told him he was using a newer version of WP but I wanted to ask you just to make sure that’s what’s causing he’s troubles since he told me in the beginning everything was fine.
Regards from C.R
B.
I have activated the plugin and I have latest version of wordpress but it doesn’t seem to work. When I press apply, it doesn’t show anything..please help