如何以编程方式在我的WordPress博客上获得活动插件列表?

时间:2012-06-10 作者:mehulved

我有两个博客,一个是多站点的,另一个不是。我想得到两个博客上活动的插件列表,以便比较它们。在多站点博客上,我想列出在网络范围和站点范围内启用的插件。

4 个回复
最合适的回答,由SO网友:Bainternet 整理而成

激活的插件存储在WordPress博客的选项表中active_plugins

所以你可以使用get_option(\'active_plugins\'); 并比较数组。

SO网友:brasofilo

以仪表板小部件的形式,一个用于单站点和网络站点仪表板,另一个用于多站点网络仪表板。

/*
 * 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>\';
    }
}

SO网友:Martin from WP-Stars.com

插件列表,以及使用它们的站点(仅限多站点)

如果您想知道当前激活的插件和站点,可以使用类似的功能:

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

SO网友:ecotechie

WP-CLI只是一张罚单。我用过很多东西,我都数不清了!

wp plugin list --status=active
如果需要,可以在本地计算机上运行这些命令with aliases...

然后使用@site函数

wp @all plugin list --status=active

wp @multisite list --status=active
wp @blog list --status=active

结束

相关推荐

Wp-content/plugins中的权限问题

我在本地机器上安装了一个WP,试图用插件弄脏我的手。我希望从github克隆一个包含此插件代码的项目。然而,我没有插件内部的权限,作为一个没有su权限的普通用户,我无法做到这一点。(当然,我可以成为根并这样做,但我不认为这是应该的)。然后,默认情况下,WP安装中的文件夹将组设置为“tape”,这对我来说很奇怪。本地WP安装上内部文件夹的正确权限应该是什么?