In the mean time, keep using your method. But as @helenhousandi linked in a comment, WordPress 3.4 will be introducing a new WP_Theme
object that will make this much easier.
Right now, you’re using get_theme_data()
to return an array with the theme’s version. No, it’s not cached … but you could likely cache it yourself in a transient if you’re accessing it a lot.
function my_get_theme_version() {
$value = get_transient( 'theme_version' );
if ( !$value ) {
$info = get_theme_data( /* theme filename */ );
$value = $info[ 'Version' ];
// Cache the value for 12 hours.
set_transient( 'theme_version', $value, 60 * 60 * 12 );
}
return $value;
}
But in WP 3.4, get_theme_data()
will be deprecated and will instead serve as a wrapper for the new WP_Theme
API (meaning the above code will still work, but will trigger a deprecation notice).
So instead, you could use this:
function my_get_theme_version() {
$theme_file = /* theme filename */;
$theme = new WP_Theme( basename( dirname( $theme_file ) ), dirname( dirname( $theme_file ) ) );
return $theme->get('Version');
}
The new object has some level of caching built in. I encourage you to read the discussion surrounding the new changes and to follow the Codex for when it’s officially documented as well.