有一个函数is\\u plugin\\u active(),可以很容易地用于此检查,但如果用户决定更改插件的文件夹名称,该怎么办?
简单地说,你做错了。
如果您正在为插件进行扩展,那么您应该在“父”插件中提供挂钩,以便这些插件挂钩并更改内容。以选项卡为例,您可以使用过滤器。
<?php
$tabs = apply_filters(\'myplugin_options_tabs\', array(
\'some_tab\' => __(\'The Tab Label\', \'your-textdomain\'),
\'a_tab\' => __(\'Another Label\', \'your-textdomain\'),
));
foreach ($tabs as $tab => $label) {
printf(\'<a href="#%s">%s</a>\', esc_attr($tab), esc_html($label));
}
// some where further on where the tab content is supposed to display:
do_action(\'myplugin_tab_\' . some_function_that_gets_the_current_tab() . \'_display\');
这样做意味着您不必在父插件中进行任何检查。附加组件可以简单地连接并完成它们的工作。更加优雅,更加灵活。
也就是说,如果你真的想检查是否存在另一个插件,最好的办法就是plugins_loaded
并检查插件的类、函数和/或常量是否存在。
<?php
add_action(\'plugins_loaded\', \'wpse89926_load\');
function wpse89926_load()
{
if (class_exists(\'Other_Plugins_Class\')) {
// do stuff, the other plugin is in installed
}
if (function_exists(\'a_function_in_the_other_plugin\')) {
// do stuff, the other plugin is in installed
}
if (defined(\'A_CONSTANT_IN_THE_OTHER_PLUGIN\')) {
// do stuff, the other plugin is in installed
}
}