답변:
이것이 일부 웹 앱에서 내가 한 방법입니다.
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()
했으며 동일한 방식으로 작동합니다.
플러그인 활성화 프로세스는 WP 관리 인터페이스와 작동하도록 코딩되어 있습니다. 오류가있는 플러그인 사용을 방지하기 위해 몇 가지 검사를 수행합니다 (시작시로드하면 WP가 중단 될 수 있음).
다른 곳에서는 사용할 수없는 것으로 문서화 된 activate_plugin()
함수 ( source )에 의해 처리됩니다 .
따라서 코드로 플러그인을 활성화하려면 목표 자체가 상대적으로 쉽습니다- active_plugins
해당 플러그인을 포함하도록 옵션을 변경하십시오 . 그러나 관련 활성화 후크를 처음부터 다시 작성해야하며 샌드 박스 단계없이 활성화하면 사이트가 손상 될 위험이 있습니다.
플러그인은 'active_plugins'옵션으로 배열에 저장됩니다. 배열에는 활성화 된 각 플러그인의 파일 경로가 포함됩니다.
플러그인을 활성화하려면 경로를 결정한 다음 해당 경로를로 전달해야합니다 activate_plugin($plugin_path)
.
이것은 말보다 쉽지만 (2.9 이상) 핵심 코드는 쉽지 않습니다.
activate_plugin ()을 사용하기 전에 wp-admin / includes /의 plugin.php 파일을 포함시켜야합니다. 플러그인이 아직 활성화되어 있지 않은지도 확인해야합니다. 결과는 다음과 같습니다 (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);
나는 WP 2.9의 프로덕션에서 이것을 사용하고 큰 문제는 없었지만 테스트 할 때 WPMU에서 예기치 않은 결과가 발생했기 때문에 네트워크 설치에서 이것을 사용하십시오.
WP Codex 에 따르면 Wordpress는 플러그인 활성화 기능을 제공합니다.
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');