Respostas:
Foi assim que fiz em alguns aplicativos da web:
function run_activate_plugin( $plugin ) {
$current = get_option( 'active_plugins' );
$plugin = plugin_basename( trim( $plugin ) );
if ( !in_array( $plugin, $current ) ) {
$current[] = $plugin;
sort( $current );
do_action( 'activate_plugin', trim( $plugin ) );
update_option( 'active_plugins', $current );
do_action( 'activate_' . trim( $plugin ) );
do_action( 'activated_plugin', trim( $plugin) );
}
return null;
}
run_activate_plugin( 'akismet/akismet.php' );
activate_plugin()
, e parece funcionar da mesma forma.
O processo de ativação do plug-in é codificado para funcionar com a interface administrativa do WP. Ele realiza algumas verificações para impedir a ativação de plugins com erros (o carregamento no início pode interromper o WP).
É tratado pela activate_plugin()
função ( origem ) que está documentada como inutilizável em outro lugar.
Portanto, se você deseja ativar o plug-in por código, o objetivo em si é relativamente fácil - alterar a active_plugins
opção para incluir esse plug-in. Mas você terá que recriar ganchos de ativação relacionados a partir do zero e corre o risco de quebrar o site ativando sem a etapa de sandbox.
Os plugins são armazenados em uma matriz na opção 'active_plugins'. A matriz contém o caminho do arquivo para cada plug-in ativo.
Para ativar um plug-in, você precisa determinar qual será o caminho e depois passá-lo para activate_plugin($plugin_path)
.
Isso é mais fácil dizer do que fazer, e (pelo menos na versão 2.9) o código principal não facilita.
Antes de poder ativar o plugin_, você precisa incluir o arquivo plugin.php em wp-admin / includes /. Você também deve verificar se o seu plug-in ainda não está ativo. O resultado é algo como isto (YMMV):
// Define the new plugin you want to activate
$plugin_path = '/path/to/your/new/plugin.php';
// Get already-active plugins
$active_plugins = get_option('active_plugins');
// Make sure your plugin isn't active
if (isset($active_plugins[$plugin_path]))
return;
// Include the plugin.php file so you have access to the activate_plugin() function
require_once(ABSPATH .'/wp-admin/includes/plugin.php');
// Activate your plugin
activate_plugin($plugin_path);
Eu uso isso na produção no WP 2.9 e não tive grandes problemas, mas em meus testes ele teve resultados muito inesperados com a WPMU, portanto, tenha cuidado ao usá-lo nas instalações de rede.
O Wordpress fornece uma função para ativar plugins, de acordo com o WP Codex
function plugin_activation( $plugin ) {
if( ! function_exists('activate_plugin') ) {
require_once ABSPATH . 'wp-admin/includes/plugin.php';
}
if( ! is_plugin_active( $plugin ) ) {
activate_plugin( $plugin );
}
}
plugin_activation('akismet/akismet.php');
Você pode simplesmente chamar a função padrão do WordPress.
activate_plugin('akismet/akismet.php');
Por favor, verifique o link abaixo para obter mais detalhes.