我想动态获取插件版本号

时间:2011-05-25 作者:Chris Marshall

您好,我最近抄袭了W3TC以实现“更新中”变更列表显示(非常酷),在my plugin, 但我更愿意避免一些尴尬的代码。

如果你看看this file, 您将看到以下代码:

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

Ick.:P

这需要保持最新,以便函数可以在插件和当前稳定版本之间进行增量。

我仔细阅读了抄本,没有找到,但有GOT 作为获取插件版本的API函数。

有什么线索吗?

6 个回复
最合适的回答,由SO网友:Matthew Muro 整理而成

下面是一个答案,其中包含一些代码,可以执行您希望它执行的操作:Is there a way for a plug-in to get it's own version number?

SO网友:goldenapples

有一个函数称为get_plugin_data(). 如果需要,请尝试从主插件文件中调用此插件:

$plugin_data = get_plugin_data( __FILE__ );
$plugin_version = $plugin_data[\'Version\'];
但是正如在对另一个问题的回答中所说的那样,在您进行操作时只定义一个PHP变量对性能更好。

SO网友:paulcol.

替代方案get_plugin_data()get_file_data() 这是可用的,无需加载额外文件的开销。

只需将其添加到主插件文件:

$plugin_data = get_file_data(__FILE__, array(\'Version\' => \'Version\'), false);
$plugin_version = $plugin_data[\'Version\'];
引擎盖下get_file_data 进行一些切割器扫描以确保性能良好。

如果需要,请定义常数:

define ( \'YOURPLUGIN_CURRENT_VERSION\', $plugin_version );

SO网友:Ivijan Stefan Stipić

一种可能的解决方案可以是regex:

$plugin_version = NULL;
if(preg_match(\'/\\*[\\s\\t]+?version:[\\s\\t]+?([0-9.]+)/i\',file_get_contents( __FILE__ ), $v))
    $plugin_version = $v[1];
必须提到,这个正则表达式比get_file_data() 但总的来说,你不会注意到这一点。

SO网友:Aamer Shahzad

就像wp_get_theme() 功能,有get_plugin_data() 作用返回插件数据,例如name, version, description, author, etc...

在调用该函数之前,请确保它可用,否则将出现错误“调用未定义的函数”。

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\' );

SO网友:Simon Ugorji

您可以在主插件的php文件中定义一个常量。

define (\'MY_PLUGIN_VERSION\', \'1.0\');
然后,如果您想在插件文件夹的后续页面中输出版本,只需使用;

<?php echo(\'MY_PLUGIN_VERSION\'); ?>
不要忘记用插件的实际名称替换“MY\\u PLUGIN”

结束

相关推荐

Can plugins become obsolete?

我认为WordPress插件是由第三方制作的。插件是否必须与WordPress升级保持同步?插件会过时吗?如果它们确实过时了,比如Linkedin共享按钮、推特推特按钮和类似Facebook的按钮的插件,切换到不同的插件会导致喜欢/推特/共享的数量丢失吗?如果插件可能会过时,那么它会发生吗?或者插件通常是最新的?或者他们是开源的,所以其他人会让他们保持最新?(正如你可能猜到的,我不是程序员。)