ฉันมี 2 บล็อกบล็อกหนึ่งซึ่งเป็นไซต์ Multisite และบล็อกที่ไม่ใช่ ฉันต้องการรับรายการปลั๊กอินที่ใช้งานได้บนทั้งบล็อกเพื่อให้สามารถเปรียบเทียบได้ ในบล็อกหลายไซต์ฉันต้องการแสดงรายการปลั๊กอินที่เปิดใช้งานทั้งเครือข่ายและกว้างไซต์
ฉันมี 2 บล็อกบล็อกหนึ่งซึ่งเป็นไซต์ Multisite และบล็อกที่ไม่ใช่ ฉันต้องการรับรายการปลั๊กอินที่ใช้งานได้บนทั้งบล็อกเพื่อให้สามารถเปรียบเทียบได้ ในบล็อกหลายไซต์ฉันต้องการแสดงรายการปลั๊กอินที่เปิดใช้งานทั้งเครือข่ายและกว้างไซต์
คำตอบ:
ปลั๊กอินที่เปิดใช้งานจะถูกเก็บไว้ในตารางตัวเลือกของบล็อก WordPress ภายใต้คีย์ active_plugins
เพื่อให้คุณสามารถใช้งานget_option('active_plugins');
แต่ละบล็อกและเปรียบเทียบอาร์เรย์
ในรูปแบบของเครื่องมือแดชบอร์ดหนึ่งสำหรับไซต์เดียวและไซต์เครือข่ายแดชบอร์ดอื่น ๆ สำหรับ Multisite Network Dashboard
/*
* Single Site Dashboard Widget
*/
add_action('wp_dashboard_setup', 'wpse_54742_wp_dashboard_setup');
function wpse_54742_wp_dashboard_setup() {
wp_add_dashboard_widget( 'wpse_54742_active_site_plugins', __( 'Active Plugins' ), 'wpse_54742_active_site_plugins' );
}
function wpse_54742_active_site_plugins() {
$the_plugs = get_option('active_plugins');
echo '<ul>';
foreach($the_plugs as $key => $value) {
$string = explode('/',$value); // Folder name will be displayed
echo '<li>'.$string[0] .'</li>';
}
echo '</ul>';
}
/*
* Multisite Dashboard Widget
*/
add_action('wp_network_dashboard_setup', 'wpse_54742_network_dashboard_setup');
function wpse_54742_network_dashboard_setup() {
wp_add_dashboard_widget( 'wpse_54742_active_network_plugins', __( 'Network Active Plugins' ), 'wpse_54742_active_network_plugins' );
}
function wpse_54742_active_network_plugins() {
/*
* Network Activated Plugins
*/
$the_plugs = get_site_option('active_sitewide_plugins');
echo '<h3>NETWORK ACTIVATED</h3><ul>';
foreach($the_plugs as $key => $value) {
$string = explode('/',$key); // Folder name will be displayed
echo '<li>'.$string[0] .'</li>';
}
echo '</ul>';
/*
* Iterate Through All Sites
*/
global $wpdb;
$blogs = $wpdb->get_results($wpdb->prepare("
SELECT blog_id
FROM {$wpdb->blogs}
WHERE site_id = '{$wpdb->siteid}'
AND spam = '0'
AND deleted = '0'
AND archived = '0'
"));
echo '<h3>ALL SITES</h3>';
foreach ($blogs as $blog) {
$the_plugs = get_blog_option($blog->blog_id, 'active_plugins');
echo '<hr /><h4><strong>SITE</strong>: '. get_blog_option($blog->blog_id, 'blogname') .'</h4>';
echo '<ul>';
foreach($the_plugs as $key => $value) {
$string = explode('/',$value); // Folder name will be displayed
echo '<li>'.$string[0] .'</li>';
}
echo '</ul>';
}
}
หากคุณต้องการทราบว่าปลั๊กอินใดที่เปิดใช้งานอยู่และในไซต์ใดคุณสามารถใช้ฟังก์ชันเช่นนั้น:
function wpstars_list_active_plugins() {
if ( function_exists( 'get_sites' ) && class_exists( 'WP_Site_Query' ) ) {
echo "<table class='active-plugins'>";
echo "<tr><th>Plugin name</th><th>Sites</th></tr>";
$plugins = get_plugins();
// Network activated
$active_plugins = get_site_option('active_sitewide_plugins');
foreach($active_plugins as $active_path => $active_plugin) {
$plugins[$active_path]['Sites'] = "A,";
}
// Per site activated
$sites = get_sites();
foreach ( $sites as $site ) {
$active_plugins = get_blog_option($site->blog_id, 'active_plugins');
foreach($active_plugins as $active_plugin) {
$plugins[$active_plugin]['Sites'] .= $site->blog_id . ",";
}
}
foreach($plugins as $plugin) {
echo "<tr><td>{$plugin['Name']}</td><td>{$plugin['Sites']}</td></tr>";
}
echo "</table>";
}
}
WP-CLI เป็นเพียงตั๋ว ฉันเคยใช้หลายสิ่งหลายอย่างฉันสูญเสียการนับ!
wp plugin list --status=active
หากคุณต้องการคุณสามารถเรียกใช้คำสั่งเหล่านี้ในเครื่องท้องถิ่นของคุณด้วยนามแฝง ...
จากนั้นคุณจะใช้ฟังก์ชัน @site
wp @all plugin list --status=active
หรือ
wp @multisite list --status=active
wp @blog list --status=active