Câu trả lời:
Đây là cách tôi đã làm trong một số ứng dụng 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()
, và nó dường như hoạt động tương tự.
Quá trình kích hoạt plugin được mã hóa để hoạt động với giao diện quản trị WP. Nó thực hiện một số kiểm tra để ngăn chặn các plugin bị lỗi (tải như vậy khi bắt đầu có thể phá vỡ WP).
Nó được xử lý bởi activate_plugin()
chức năng ( nguồn ) được ghi nhận là không sử dụng được ở nơi khác.
Vì vậy, nếu bạn muốn kích hoạt plugin bằng mã, mục tiêu tự nó tương đối dễ dàng - để thay đổi active_plugins
tùy chọn để bao gồm plugin đó. Nhưng bạn sẽ phải tạo lại các móc kích hoạt có liên quan từ đầu và sẽ có nguy cơ phá vỡ trang web bằng cách kích hoạt mà không có bước hộp cát.
Các plugin được lưu trữ trong một mảng trong tùy chọn 'active_plugins'. Mảng chứa đường dẫn tệp đến từng plugin đang hoạt động.
Để kích hoạt một plugin bạn cần xác định đường dẫn của nó là gì, sau đó chuyển đường dẫn đó đến activate_plugin($plugin_path)
.
Điều này nói thì dễ hơn làm, và (ít nhất là trong 2.9) mã lõi không làm cho nó dễ dàng.
Trước khi bạn có thể kích hoạt_plugin (), bạn cần bao gồm tệp plugin.php từ wp-admin / gồm /. Bạn cũng nên kiểm tra để đảm bảo plugin của bạn chưa hoạt động. Kết quả trông giống như thế này (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);
Tôi sử dụng điều này trong sản xuất trong WP 2.9 và không có vấn đề gì lớn nhưng trong thử nghiệm của tôi, nó đã có kết quả rất bất ngờ với WPMU, vì vậy hãy cẩn thận khi sử dụng cài đặt này trên mạng.
Wordpress cung cấp chức năng kích hoạt các plugin, theo 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');
Bạn chỉ có thể gọi chức năng mặc định của WordPress.
activate_plugin('akismet/akismet.php');
Vui lòng kiểm tra liên kết dưới đây để biết thêm chi tiết.