我可以从API中列出所有已安装的插件/版本和wp版本吗

时间:2018-10-05 作者:Jacob JL

我想为Wordpress实例列表生成一个简单的文本报告:

安装的Wordpress版本插件(版本和是否启用)我可以从仪表板获取此信息,但是否有方法通过编程方式获取(使用WP API或其他智能方式)?

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

是的,有一种方法可以通过编程获得这些信息。

WordPress Version Info

这个WordPress version 作为全局存在,但您也可以使用get_bloginfo() 功能:

global $wp_version;
echo $wp_version;

// OR

$wordpress_version = get_bloginfo( \'version\' );
echo $wordpress_version;

Plugin Info

要检索插件信息,请使用get_plugins() 作用您需要确保还包括wp admin/includes/plugin。不能认为在每个用例中都加载了将其用作此文件的php文件。

include_once( \'wp-admin/includes/plugin.php\' );
$plugins = get_plugins();
从Codex文章get_plugins() 您可以看到,上述内容将为您提供一个数组,其中包含所有已安装插件的信息:

Array
(
    [hello-dolly/hello.php] => Array
        (
            [Name] => Hello Dolly
            [PluginURI] => http://wordpress.org/extend/plugins/hello-dolly/
            [Version] => 1.6
            [Description] => This is not just a plugin, it symbolizes the hope and enthusiasm of an entire generation summed up in two words sung most famously by Louis Armstrong: Hello, Dolly. When activated you will randomly see a lyric from <cite>Hello, Dolly</cite> in the upper right of your admin screen on every page.
            [Author] => Matt Mullenweg
            [AuthorURI] => http://ma.tt/
            [TextDomain] => 
            [DomainPath] => 
            [Network] => 
            [Title] => Hello Dolly
            [AuthorName] => Matt Mullenweg

)
获取有关的信息active plugins, 使用以下选项:

$active_plugins = get_option( \'active_plugins\' );
$active_plugins 将是一个活动插件数组,如下所示(继续上面的示例):

Array
(
    [0] => hello-dolly/hello.php
)
将这些东西放在一起,您可以使用下面的实用程序函数获取所有已安装的插件和所有活动插件,并将结果放入包含插件名称、版本以及是否活动的数组中:

function my_get_plugin_info() {

    // Get all plugins
    include_once( \'wp-admin/includes/plugin.php\' );
    $all_plugins = get_plugins();

    // Get active plugins
    $active_plugins = get_option(\'active_plugins\');

    // Assemble array of name, version, and whether plugin is active (boolean)
    foreach ( $all_plugins as $key => $value ) {
        $is_active = ( in_array( $key, $active_plugins ) ) ? true : false;
        $plugins[ $key ] = array(
            \'name\'    => $value[\'Name\'],
            \'version\' => $value[\'Version\'],
            \'active\'  => $is_active,
        );
    }

    return $plugins;
}
这将为您提供一个数组结果:

[akismet/akismet.php] => Array
    (
        [name] => Akismet Anti-Spam
        [version] => 4.08
        [active] => 1
    )
[gutenberg/gutenberg.php] => Array
    (
        [name] => Gutenberg
        [version] => 3.9.0
        [active] => 1
    )

[hello-dolly/hello.php] => Array
    (
        [name] => Hello Dolly
        [version] => 1.6
        [active] => 
    )
请注意,我将“active”设置为布尔值,但在实用程序函数中,可以将其设置为“active”/“inactive”或其他任何形式。此外,我只在数组中包括名称、版本和活动,因为您在OP中提到了这一点,但是get_plugins() 结果可以包括在内。

我将上述实用程序函数和一个备用版本放在一起,该版本只需向返回的数组添加一个“Active”键get_plugins() 并将其保存为a gist for anyone who needs it.

结束

相关推荐

Testing Plugins for Multisite

我最近发布了一个WordPress插件,它在单个站点上非常有效。我被告知该插件在多站点安装上不能正常工作,我理解其中的一些原因。我已经更新了代码,现在需要一种方法来测试更新后的代码,然后才能转到实时客户的多站点安装。我有一个用于测试的WordPress安装程序的单站点安装,但需要在多站点安装上进行测试。根据我所能找到的唯一方法是在网络上至少有两个站点来安装整个多站点安装,以测试我的插件。设置WordPress的整个多站点安装是插件开发人员的唯一/首选方式,还是有更快的测试环境可用。