我在WP\\U SE上看到了许多类似的问题,但我认为我的情况有点不同,因为我正在创建的公共库是我当然希望能够更新和维护的框架,但不是装饰——即:我不能创建一个依赖于库的主题,如果找不到库,就可以很好地降低主题。
Common Libraries
我有一组实用函数和一些类,我开发这些函数和类是为了真正加快WordPress定制的某些方面。我在自定义主题中广泛使用了它们,然后它们通常被捆绑在主题的某个子目录中。
现在我正在编写一个插件,我想在插件中使用这些库。对于插件来说,它们的逻辑位置应该在插件目录结构中的某种lib/或include/文件夹中。
当然,问题是如果我同时使用插件和主题,那么函数和类都会被声明两次,这会引发一个错误。Require\\u once没有意识到由于路径不同,它们是相同的代码库。
一种解决方案是将所有这些lib捆绑到一个单独的插件中,并让主题和插件利用此实用程序插件。但因为这些LIBessential 对于主题/插件的操作,插件must 在使用主题/插件时安装。展望未来,我不希望有人下载并安装我的主题,然后下载并安装一个插件,这样主题就可以工作了。所以这个解决方案对我来说似乎是不可能的。
一个主题或插件可以获取另一个插件并安装它吗?主题安装进程是否可以写入wp-content/themes
? 插件激活过程也一样?
SO网友:EarnestoDev
Method #1:创建一个只加载库的插件,并将其放置在/wp-content/mu-plugins (这些在常规插件/主题之前自动加载)文件夹。然后从其他地方移除您的库。
Method #2 (最佳方式):保护函数和类声明以防止名称冲突。
if(!function_exists(\'unduplicatable\')):
function unduplicatable(){
// Add code here
}
endif;
或:
if(!class_exists(\'unduplicatable\')):
class unduplicatable(){
// Add code here
}
endif;
或
if(!isset($global_variable)):
// Prevent double initializations
$global_variable = array();
endif;
问候