ฉันจะรับรายการปลั๊กอินที่ใช้งานอยู่ในบล็อก WordPress ของฉันโดยทางโปรแกรมได้อย่างไร


13

ฉันมี 2 บล็อกบล็อกหนึ่งซึ่งเป็นไซต์ Multisite และบล็อกที่ไม่ใช่ ฉันต้องการรับรายการปลั๊กอินที่ใช้งานได้บนทั้งบล็อกเพื่อให้สามารถเปรียบเทียบได้ ในบล็อกหลายไซต์ฉันต้องการแสดงรายการปลั๊กอินที่เปิดใช้งานทั้งเครือข่ายและกว้างไซต์

คำตอบ:


20

ปลั๊กอินที่เปิดใช้งานจะถูกเก็บไว้ในตารางตัวเลือกของบล็อก WordPress ภายใต้คีย์ active_plugins

เพื่อให้คุณสามารถใช้งานget_option('active_plugins'); แต่ละบล็อกและเปรียบเทียบอาร์เรย์


2
เป็นมูลค่าเพิ่มที่ get_plugins () จะให้ปลั๊กอินทั้งหมดรวมถึงปลั๊กอินที่ไม่ได้ใช้งาน
Charles Jaimet

13

ในรูปแบบของเครื่องมือแดชบอร์ดหนึ่งสำหรับไซต์เดียวและไซต์เครือข่ายแดชบอร์ดอื่น ๆ สำหรับ 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>';
    }
}

1
นี่เป็นมากกว่าที่ฉันต้องการ แต่จริง ๆ แล้วขอขอบคุณที่คุณให้เวลาตอบคำถามโดยละเอียด หวังว่ามันจะช่วยคนอื่นได้ ขอบคุณ.
mehulved

4

รายการปลั๊กอินที่มีไซต์ที่ใช้ (เป็น Multisite เท่านั้น)

หากคุณต้องการทราบว่าปลั๊กอินใดที่เปิดใช้งานอยู่และในไซต์ใดคุณสามารถใช้ฟังก์ชันเช่นนั้น:

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>";
  }
}

1

WP-CLI เป็นเพียงตั๋ว ฉันเคยใช้หลายสิ่งหลายอย่างฉันสูญเสียการนับ!

wp plugin list --status=active

หากคุณต้องการคุณสามารถเรียกใช้คำสั่งเหล่านี้ในเครื่องท้องถิ่นของคุณด้วยนามแฝง ...

จากนั้นคุณจะใช้ฟังก์ชัน @site

wp @all plugin list --status=active

หรือ

wp @multisite list --status=active
wp @blog list --status=active
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.