使用定制代码,我如何从WordPress插件库中获取数据?

时间:2019-08-14 作者:cag8f

在WordPress repo中,每个插件的主页上都会显示插件上次更新的日期(screenshot). 从我自己的WordPress站点,是否可以使用自定义PHP和/或JavaScript代码获取这些数据?我想获取安装在我的站点上的每个插件的此信息,然后将其显示在仪表板-->插件页面上。

也许有某种API可以让WordPress repo中的所有插件都可以访问这些数据?

如果可能的话,我可能还想获取与插件相关的其他数据,例如“WordPress版本”和“测试到”

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

也许有某种API可用

Yes, there is, 你可以去看看here.

这里有一些链接自该Codex页面的示例,您可能希望使用版本1.2(GET (仅请求)或API的1.1版本,其中这两个版本的响应格式均为JSON。

实际上,还有plugins_api() 让事情变得容易;但是,您需要手动加载定义函数的文件(wp-admin/includes/plugin-install.php).

示例使用plugins_api()

// You may comment this out IF you\'re sure the function exists.
require_once ABSPATH . \'wp-admin/includes/plugin-install.php\';

$args = [
    \'slug\' => \'woocommerce\',
];

$data = plugins_api( \'plugin_information\', $args );
//var_dump( $data );

if ( $data && ! is_wp_error( $data ) ) {
    echo \'Latest version: \' . $data->version;
}

手动HTTP请求示例

$args = [
    \'slug\' => \'woocommerce\',
];

$url = \'http://api.wordpress.org/plugins/info/1.2/\';
$url = add_query_arg( [
    \'action\'  => \'plugin_information\', // first param for plugins_api()
    \'request\' => $args,                // second param for plugins_api()
], $url );

$res = wp_remote_get( $url );
if ( ! is_wp_error( $res ) ) {
    $data = json_decode( wp_remote_retrieve_body( $res ) );
    //var_dump( $data );
    echo \'Latest version: \' . $data->version;
}
无论哪种方式,如果您想排除某些字段(如评论)和自述部分(如“说明”和“安装”),可以使用fields 类似这样的论点:

$args = [
    \'slug\' => \'woocommerce\',
    \'fields\' => [
        \'sections\' => false, // excludes all readme sections
        \'reviews\'  => false, // excludes all reviews
    ],
];

相关推荐

WP REST API-将分类搜索限制为第一个字母

我正在尝试建立一个a-Z索引,并希望通过分类名称的第一个字母过滤自定义分类的响应。所以,如果我有[\'Ana\', \'Olina\', \'Ford\'], 我想要一些wp-json/wp/v2/names/?starts_with=A 只给我一个“Ana”。现在如果我这样做了names/?search=A, 我得到“安娜”和“奥莉娜”我已经找过了,但没有找到任何类似的。