Continuing the discussion from Explore Gravity Forms (awesome list):
My recent journeys into cataloging warez helped me produce concrete plans for how to organize that data. That is to say: not in one bucket. So I’ve been looking at the warez I interact with and see an obvious bucket: WordPress plugins and themes.
In exploring the Gravity Forms awesome list I will be able to document a whole lot of info about plugins, so I started looking at what I’d want to collect. When I look at a directory page I go look at prior art, and fortunately we have a prime example of a plugin directory in the WordPress plugins, but doubly fortunate as it also has an API: WordPress.org API « WordPress Codex.
Honestly, the API for the plugins aren’t great. Here they are, today:
Plugins
- https://api.wordpress.org/plugins/info/1.0/{slug}
- https://api.wordpress.org/plugins/info/1.0/{slug}.json
- https://api.wordpress.org/plugins/update-check/1.0/
1.1 & 1.2
- https://api.wordpress.org/plugins/update-check/1.1/
- https://api.wordpress.org/plugins/info/1.2/?{params} – see docs
- https://api.wordpress.org/plugins/info/1.2/?action=query_plugins&request[author]={author_slug}
The main difference is that 1.1 uses JSON by default, where as 1.0 used PHP Serialized by default. The 1.2 Info endpoints only accepts GET requests, and includes a different set of default fields - as used by WordPress 5.0+.
Note: Some docs on this api can be found here: WordPress.org Plugin Information API Docs – blog://dd32.id.au/
Examples:
Basic Example of getting total download count of a plugin - Communicating With the WordPress.org Plugin API
A blog post about how to use the WordPress.org API to search for plugins and themes - How to Use WordPress.org API to Search for Plugins and Themes - Orbisius
It’s all good though, I just need to grab the data page for a given plugin, and the URL to do so is straightforward: https://api.wordpress.org/plugins/info/1.0/hello-dolly.json
{
"name": "Hello Dolly",
"slug": "hello-dolly",
"version": "1.7.2",
"author": "<a href=\"http://ma.tt/\">Matt Mullenweg</a>",
"author_profile": "https://profiles.wordpress.org/matt",
"requires": "4.6",
"tested": "5.2.5",
"requires_php": false,
"compatibility": [],
"rating": 52,
"ratings": {
"1": 122,
"2": 8,
"3": 5,
"4": 6,
"5": 81
},
"num_ratings": 222,
"support_threads": 0,
"support_threads_resolved": 0,
"downloaded": 5820372,
"last_updated": "2019-05-24 7:48pm GMT",
"added": "2008-07-06",
"homepage": "http://wordpress.org/plugins/hello-dolly/",
"sections": {
"description": "<p>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 Hello, Dolly in the upper right of your admin screen on every page.</p>\n<p>Thanks to Sanjib Ahmad for the artwork.</p>\n"
},
"download_link": "https://downloads.wordpress.org/plugin/hello-dolly.1.7.2.zip",
"screenshots": [],
"tags": [],
"versions": {
"1.5": "https://downloads.wordpress.org/plugin/hello-dolly.1.5.zip",
"1.6": "https://downloads.wordpress.org/plugin/hello-dolly.1.6.zip",
"1.7.2": "https://downloads.wordpress.org/plugin/hello-dolly.1.7.2.zip",
"trunk": "https://downloads.wordpress.org/plugin/hello-dolly.zip"
},
"donate_link": "",
"author_block_count": 0,
"author_block_rating": 52,
"contributors": []
}
My plugin directory will have non-public plugins, so this won’t always be useful, but it certainly goes most of the way! Pretty sure I can use a slug in a front matter to build the query.
Next step is to ID which data points I want to collect, and what I find useful…