Come posso ottenere un elenco di plugin attivi sul mio blog wordpress a livello di codice?


13

Ho 2 blog, uno che è multisito e uno che non lo è. Voglio ottenere un elenco di plugin attivi su entrambi i blog in modo da poterli confrontare. Sul blog multisito, desidero elencare i plug-in abilitati a livello di rete e di sito.

Risposte:


20

I plug-in attivati ​​sono memorizzati nella tabella delle opzioni di un blog WordPress sotto il tasto active_plugins

così puoi usare get_option('active_plugins'); ogni blog e confrontare le matrici.


2
Vale la pena aggiungere che get_plugins () ti darà tutti i plugin inclusi quelli inattivi.
Charles Jaimet,

13

Sotto forma di un widget Dashboard, uno per Dashboard siti singoli e siti di rete, l'altro per Dashboard di rete multisito.

/*
 * 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
Questo è stato molto più di quanto avessi richiesto, ma apprezzo molto il fatto che tu abbia avuto il tempo di fornire una risposta così dettagliata. Spero che possa aiutare qualcun altro. Grazie.
Mehulved

4

Elenco di plug-in, con siti su cui vengono utilizzati (solo Multisito)

Se vuoi sapere quale plug-in è attualmente attivato e su quale sito, puoi utilizzare una funzione come quella:

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 è solo il biglietto. Ho usato se per così tante cose, ho perso il conto!

wp plugin list --status=active

Se lo desideri, puoi eseguire questi comandi sul tuo computer locale con alias ...

Dovresti quindi utilizzare la funzione @site

wp @all plugin list --status=active

o

wp @multisite list --status=active
wp @blog list --status=active
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.