为什么我没有看到插件使用GET_FILE_DATA来处理插件版本的检索?

时间:2014-03-09 作者:Dan

就最佳实践而言,我很好奇为什么我没有看到任何人使用get_file_dataget_plugin_data 获取插件版本(用于控制CSS/JS文件的版本)。许多高质量的插件都会对其文件进行版本化,但它们会硬编码版本号,这让我觉得在发布时很容易错过。

显然,这些函数有一点开销,因为我们正在进行文件IO,而不仅仅是版本,但这似乎是为在发布中少犯一个容易的错误而付出的一个小代价。

像下面这样的函数似乎比硬编码更合理,那么为什么不使用它呢?我想这是有充分理由的,但我看不出来。

 public static function version() {
   static $version = false;
   if(false === $version) {
      include_once WP_ADMIN_DIR . \'/includes/plugin.php\';
      $data = get_plugin_data(__FILE__, false);
      $version = $data[\'Version\'];
   }

   return $version;
}

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

我认为不可能直接回答这个问题。我不知道为什么您没有看到类似的代码,我也不知道插件作者为什么使用或不使用类似的代码。然而

您提到的函数可以定位、读取和处理文件。无论是编写代码还是(可能)执行代码,使用常量保存版本号都比从文件系统定位、读取和处理文件更快、更容易。

你是对的,这意味着有两个版本号需要注意,但无论如何,在我的脑海中,插件读取自己的文件以找出它是什么版本,这是一种挥霍无度的行为。PHP不会编译成可执行文件,因此在需要版本的每个页面加载上都会发生这种情况。实施的细节可能会使这成为一个没有实际意义的问题,但总的来说,我会回避它。

另一方面,如果一个插件或主题需要查找其他插件的数据,那么您提到的功能将非常有用。在我看来,这就是这些功能的用例。

结束

相关推荐

Plugins_url函数混合了系统路径和URL

在我的WordPress小部件中,我使用以下代码:wp_register_script(\'jquery-ui.widget\', plugins_url(\'assets/js/jquery-ui-1.9.2.widget.js\', dirname( __FILE__ ))); 不幸的是,代码给了我一个无效的URL,它与我的系统路径混合在一起:http://test.dev/wp-content/plugins/C:/projects/wordpress/plugins/assets/js/