Is it save to require plugin.php early to be able to use get_plugin_data() earlier?

I'd like to avoid hard coding my plugin's version at multiple places. To realize this the function get_plugin_data() comes in handy. But here the fun comes to an unpleasant stop. Checking for a plugin update to execute related housekeeping for example should be done early (e.g. plugins_loaded) but unfortunately wp-admin/includes/plugin.php is not loaded before admin_init is fired.

Using a later hook is not possible here. This might be a solution for some plugins but it doesn't work for me, as my plugin hooks into the login process and needs to do its on update processing before that...

My question is: is it save to require( ABSPATH . 'wp-admin/includes/plugin.php') earlier in my plugin? The file contains some function definitions and adds a filter. That's it.

I tried it. At first glance it works and I cannot see any implications but maybe you are aware of some? I'd be happy about any hint, positive or negative. Thank you!

Topic admin-init get-plugin-data plugin-development wp-admin Wordpress

Category Web


No, don't require plugin.php.

To avoid a tiny bit of bad code you are about to introduce a lot of really bad code. Who knows what can go wrong if you include plugin.php. And who knows what could go wrong in the years to come. WordPress core developers are not expecting users to include core files earlier in init process.

So instead of doing it in really dangerous and unexpected way, just do something like define('MY_PLUGIN_VERSION', 2); right below your plugin Version header. This is way safer and better.


At first glance it works and I cannot see any implications but maybe you are aware of some?

You say that you are not getting errors, which I would have expected but it looks as though WordPress uses require_once() so you are probably safe:

39  /** WordPress Plugin Administration API */
40  require_once(ABSPATH . 'wp-admin/includes/plugin.php');

This kind of hack tends to indicate that you are doing something wrong though.

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.