I Want to Get A Plugin Version Number Dynamically

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:

Read More

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?

Related posts

Leave a Reply

6 comments

  1. 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.

  2. 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 );
    
  3. 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.

  4. 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' );
    
  5. 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