Para uma explicação completa do que está acontecendo, veja este post (este é para desativar plug-ins, mas o problema é o mesmo).
Uma breve explicação: Os plug-ins são essencialmente ativados, adicionando-os à matriz de pug-ins ativos armazenados no banco de dados. Quando você ativa o primeiro plug-in, o WordPress recupera a matriz de todos os plug-ins atualmente ativos, adiciona o plug-in a ele (mas ainda não atualiza o banco de dados) e executa o retorno de chamada da instalação.
Este retorno de chamada da instalação executa seu código.
Depois disso, o WordPress atualiza o banco de dados com a matriz acima, que contém o primeiro mas não o segundo plug-in. Assim, seu segundo plug-in parece não estar ativado.
Solução: mencionou no link acima a solução é algo assim (não testado):
//This goes inside Plugin A.
//When A is activated. activate B.
register_activation_hook(__FILE__,'my_plugin_A_activate');
function my_plugin_A_activate(){
$dependent = 'B/B.php';
if( is_plugin_inactive($dependent) ){
add_action('update_option_active_plugins', 'my_activate_dependent_B');
}
}
function my_activate_dependent_B(){
$dependent = 'B/B.php';
activate_plugin($dependent);
}