talkgroup

What is a plugin page?

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: https://codex.wordpress.org/WordPress.org_API#Plugins.

Honestly, the API for the plugins aren’t great. Here they are, today:

Plugins

1.1 & 1.2

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 - http://wp.tutsplus.com/tutorials/plugins/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…