I Want to Get A Plugin Version Number Dynamically

The question:

Howdy, I recently cribbed W3TC to implement an “in-update” changelist display (very cool), in my plugin, but there’s an awkward bit of code I’d prefer to avoid.

If you look at the top of this file, you’ll see the following code:

define ( 'BMLT_CURRENT_VERSION', '2.1.16' ); // This needs to be kept in synch with the version above.

Ick. 😛

That needs to be kept up to date, so the function can delta between your plugin, and the current stable version.

I have perused the Codex, and can’t find it, but there has GOT to be an API function for getting the version of a plugin.

Any clues?

The Solutions:

Below are the methods you can try. The first solution is probably the best. Try others if the first one doesn’t work. Senior developers aren’t just copying/pasting – they read the methods carefully & apply them wisely to each case.

Method 1

Here is an answer with some code that will do what you want it to do: Is there a way for a plug-in to get it’s own version number?

Method 2

There is a function called get_plugin_data(). Try calling this from within the main plugin file if you need to:

$plugin_data = get_plugin_data( __FILE__ );
$plugin_version = $plugin_data['Version'];

But as is said in the answers to the other question, its better for performance to just define a PHP variable as you’re doing.

Method 3

An alternative to get_plugin_data() is get_file_data() which is available without the overhead of loading additional files.

Simply add this to your main plugin file:

$plugin_data = get_file_data(__FILE__, array('Version' => 'Version'), false);
$plugin_version = $plugin_data['Version'];

Under the hood get_file_data does some cleaver scanning to be quite performant.

And if needed define your constant:

define ( 'YOURPLUGIN_CURRENT_VERSION', $plugin_version );

Method 4

One possible solution can be regex:

$plugin_version = NULL;
if(preg_match('/*[st]+?version:[st]+?([0-9.]+)/i',file_get_contents( __FILE__ ), $v))
    $plugin_version = $v[1];

Must mention that this regex is a bit faster than get_file_data() but in the general you will not notice it.

Method 5

Just like wp_get_theme() function, there is get_plugin_data() function. That returns plugin data e.g name, version, description, author, etc...

Before calling the function, make sure it’s available, otherwise, you will get the error ‘call to undefined function’.

if( ! function_exists('get_plugin_data') ){
    require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
$plugin_data = get_plugin_data( __FILE__, false );

define( 'BMLT_NAME', ($plugin_data && $plugin_data['Name']) ? $plugin_data['Name'] : 'Plugin Name' );
define( 'BMLT_CURRENT_VERSION', ($plugin_data && $plugin_data['Version']) ? $plugin_data['Version'] : '1.0.0' );

Method 6

You can define a constant in your main plugin’s php file.

define ('MY_PLUGIN_VERSION', '1.0');

Then if you want to output the version in subsequent pages within your plugin folder, just use;

<?php echo('MY_PLUGIN_VERSION'); ?>

Don’t forget to Replace ‘MY_PLUGIN’ With the actual name of your plugin

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

Leave a Comment