หากเป็นไปได้จะเปิดใช้งานปลั๊กอินที่ติดตั้งอย่างไร (หมายถึงไฟล์ถูกวางไว้ในไดเรกทอรี wp-content / plugins) ถูกเปิดใช้งานจากปลั๊กอินอื่น ๆ ?
หากเป็นไปได้จะเปิดใช้งานปลั๊กอินที่ติดตั้งอย่างไร (หมายถึงไฟล์ถูกวางไว้ในไดเรกทอรี wp-content / plugins) ถูกเปิดใช้งานจากปลั๊กอินอื่น ๆ ?
คำตอบ:
นี่คือวิธีที่ฉันทำในบางเว็บแอป:
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()
ฟังก์ชั่น ( แหล่งที่มา ) ซึ่งบันทึกว่าไม่สามารถใช้งานได้ที่อื่น
ดังนั้นหากคุณต้องการเปิดใช้งานปลั๊กอินด้วยรหัสเป้าหมายตัวเองค่อนข้างง่าย - การเปลี่ยนตัวactive_plugins
เลือกเพื่อรวมปลั๊กอินนั้น แต่คุณจะต้องสร้างฮุคการเปิดใช้งานที่เกี่ยวข้องอีกครั้งตั้งแต่เริ่มต้นและจะเสี่ยงต่อการแตกไซต์โดยการเปิดใช้งานโดยไม่ต้องใช้ขั้นตอนแซนด์บ็อกซ์
ปลั๊กอินจะถูกเก็บไว้ในอาร์เรย์ในตัวเลือก 'active_plugins' อาร์เรย์มีเส้นทางไฟล์ไปยังแต่ละปลั๊กอินที่ใช้งานอยู่
activate_plugin($plugin_path)
เพื่อเปิดใช้งานปลั๊กอินที่คุณจำเป็นต้องตรวจสอบสิ่งที่เส้นทางของมันจะเป็นแล้วผ่านเส้นทางไปที่
สิ่งนี้พูดได้ง่ายกว่าทำและ (อย่างน้อยใน 2.9) รหัสหลักไม่ได้ทำให้ง่ายขึ้น
ก่อนที่คุณจะสามารถ enable_plugin () คุณต้องรวมไฟล์ plugin.php จาก wp-admin / include / คุณควรตรวจสอบเพื่อให้แน่ใจว่าปลั๊กอินของคุณไม่ได้ใช้งานอยู่ ผลลัพธ์มีลักษณะดังนี้ (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 ดังนั้นโปรดใช้สิ่งนี้ในการติดตั้งเครือข่าย
Wordpress มีฟังก์ชั่นสำหรับเปิดใช้งานปลั๊กอินตาม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');
คุณสามารถเรียกฟังก์ชั่นเริ่มต้นของ WordPress ได้
activate_plugin('akismet/akismet.php');
กรุณาตรวจสอบลิงค์ด้านล่างเพื่อดูรายละเอียดเพิ่มเติม