Support » Plugins » Hacks » Is deactivate_plugins necessary on register_activation_hook wp check version?

  • Resolved somtam

    (@somtam)


    Hello everybody,

    I see that deactivate_plugins is not working inside the hook register_activation_hook.
    Probably because the plugin is not active yet.
    So I have to use wp_die in order to avoid the plugin to be activated.
    But in this way is there a point to use deactivate_plugins?

    register_activation_hook( __FILE__ , 'xxx_activate_plugin');
    function xxx_activate_plugin(){
      if(version_compare( get_bloginfo( 'version' ), '7', '<')){
        deactivate_plugins( plugin_basename( __FILE__ ) ); // useless?
        wp_die('some text');
      }
    }
    • This topic was modified 2 years, 6 months ago by  somtam.
Viewing 4 replies - 1 through 4 (of 4 total)
  • Moderator bcworkz

    (@bcworkz)

    No point, because as you say, the plugin isn’t activated yet. The only way to stop activation here is to die or exit, any other efforts don’t make sense.

    I personally have not dealt with version restrictions for plugins, but it seems to me you would also want to (maybe you have) check versions when the plugin loads normally because it might be possible for your plugin to be activated without triggering the activation hook. It would be a special case where someone is doing it wrong, but doing it wrong happens.

    Hello Bcworkz, thanks for answer.

    I am agree to use wp_die to stop the activation, but i was wondering if there is some setting half initialized that needs to be cleaned.

    In this page
    https://codex.wordpress.org/Function_Reference/deactivate_plugins
    the example uses it, but still don’t know why.

    Thanks!

    Moderator bcworkz

    (@bcworkz)

    I don’t think so, AFAIK, activation from WP’s standpoint is just adding your plugin to an array in the options table. When WP initializes, it goes through this array and include/requires all related files. On a quick scan of the activation function, I don’t see anything else happening during activation that would persist.

    The only explanation I have for the deactivation call in the Codex is the hook had fired later in previous versions, after the plugin was added to that array. As things currently stand, I see no reason to do this call.

    The Codex is destined to be replaced by various other resources, so it often doesn’t get any love. The same example was migrated to the new Code Reference, which only a few people can edit, so there isn’t much point in us changing the Codex example. At least making the call doesn’t do any harm, it’s just pointless to do so.

    Ok, thanks for the clarification.

Viewing 4 replies - 1 through 4 (of 4 total)
  • The topic ‘Is deactivate_plugins necessary on register_activation_hook wp check version?’ is closed to new replies.