我有一个类设置,可以在我的mu插件上运行一些数据库脚本。
function activate_mjmc_core() {
require_once plugin_dir_path( __FILE__ ) . \'includes/class-mjmc-core-activator.php\';
Mjmc_Core_Activator::activate();
Mjmc_Core_Activator::mjmc_database_version();
Mjmc_Core_Activator::mjmc_companies_table();
Mjmc_Core_Activator::mjmc_locations_table();
Mjmc_Core_Activator::mjmc_companies_insert();
}
register_activation_hook( __FILE__, \'activate_mjmc_core\' );
现在,当我把它作为一个普通的插件使用时,这些功能就可以正常工作了,我必须激活它。
但是,当我在我的mu插件中使用它时,所有其他插件函数都可以工作,它只是在激活时不运行上面列出的数据库函数。对于这些数据库函数,我还需要做些什么吗?或者在另一个wordpress钩子上运行这个?
谢谢
最合适的回答,由SO网友:Jacob Peattie 整理而成
MU插件不“激活”或“停用”。他们是在场还是不在场。因此,您需要一种不同的方法。一种选择是只在上执行激活功能init, 并在数据库中存储一条记录,说明是否已完成:
function activate_mjmc_core() {
if ( \'1\' === get_option( \'mjmc_activated\' ) ) {
return;
}
require_once plugin_dir_path( __FILE__ ) . \'includes/class-mjmc-core-activator.php\';
Mjmc_Core_Activator::activate();
Mjmc_Core_Activator::mjmc_database_version();
Mjmc_Core_Activator::mjmc_companies_table();
Mjmc_Core_Activator::mjmc_locations_table();
Mjmc_Core_Activator::mjmc_companies_insert();
update_option( \'mjmc_activated\', \'1\' );
}
add_action( \'init\', \'activate_mjmc_core\' );