ClassicPress Directory API

Plugins API EndpointsLink to this section

URL: https://directory.classicpress.net/wp-json/wp/v2/plugins

You can retrieve a paginated list of all published plugins. The response will hold a JSON object holding the plugin information, as seen below.

URL: https://directory.classicpress.net/wp-json/wp/v2/plugins/?byslug={slug}

The {Slug} represents the plugin name (slug).

You can retrieve information about each published ClassicPress plugin. The response will hold a serialized array of plugin information, as seen in the example below:

[{
    "title":{
        "rendered":"Switch to ClassicPress"
    },
    "content":{
        "rendered":"Switch your WordPress installation to ClassicPress. Also a tool to try different versions of ClassicPress (also nightly builds or RC).",
        "protected":false
    },
    "excerpt":{
        "rendered":"Switch your WordPress installation to ClassicPress. Also a tool to try different versions of ClassicPress (also nightly builds or RC).",
        "protected":false
    },
    "meta":{
        "current_version":"1.5.2",
        "git_provider":"github",
        "requires_cp":"1.7",
        "download_link":"https:\/\/github.com\/ClassicPress\/ClassicPress-Migration-Plugin\/releases\/download\/1.5.2\/switch-to-classicpress.zip",
        "requires_php":"7.4",
        "slug":"switch-to-classicpress",
        "developer_name":"ClassicPress",
        "category_names":"Tools",
        "category_slugs":"tools",
        "active_installations":"14",
        "published_at":"1738941473",
        "item_status":"active",
        "premium_uri":"",
        "cpcs_status":"passing"
    },
    "featured_image":"https:\/\/directory.classicpress.net\/wp-content\/uploads\/banner-772x250-1.webp"
}]

The decoded response data object propertiesLink to this section

  • title The name of the plugin.
  • content The plugin’s full description. This may contain HTML-markup, such as line breaks.
  • excerpt The plugin’s short description.
  • meta Object describing meta info of the plugin. The object’s properties are:
    • current_version The current version (stable) of the plugin.
    • git_provider The Git provider. Currently only GitHub Supported.
    • requires_cp The minimally required ClassicPress version.
    • download_link Stable release download link on remote repository.
    • requires_php The minimally required PHP version.
    • slug The slug of the plugin.
    • developer_name Name of the developer.
    • category_names The ClassicPress Plugin Directory category or categories.
    • category_slugs The ClassicPress Plugin Directory category slug(s).
    • active_installations Active installations of the plugin.
    • published_at When the developer published this plugin.
    • item_status The plugin status. Values are: active, suspended, closed, ownership (Ownership Changed) or adoption (Plugin is Adoptable).
    • premium_uri Remote repository (Currently only GitHub supported) URL.
    • cpcs_status Whether the plugin passed the CP Coding Standards or not
  • featured_image Full link to the Directory image.

Integration example with ClassicPress/WordPressLink to this section

There are many ways to get a response from an API. If you are using ClassicPress — perhaps you are creating a plugin to display some data about ClassicPress plugins or themes — you can get the response by adopting the following method. We will use a ClassicPress plugin as an example.

Step One: GET a responseLink to this section

Use wp_remote_get to get the API response. Example:

$plugin = 'switch-to-classicpress';
$response = wp_remote_get( 'https://directory.classicpress.net/wp-json/wp/v2/plugins/?byslug=' . $plugin );

Step Two: Check for the response Status CodeLink to this section

Check if the response status is 200 OK using wp_remote_retrieve_response_code like so:

if( wp_remote_retrieve_response_code( $response ) === 200 ){
  // The response status is 200 OK
}

Step Three: Retrieve the Response BodyLink to this section

Retrieve the response body using wp_remote_retrieve_body like so:

$response_body = wp_remote_retrieve_body( $response );

Then decode the response using json_decode. Do not forget to stripslashes the response body before decoding it. Example:

$decoded_response = json_decode( stripslashes( $response_body ) );

You now have an object at your disposal that holds the retrieved information about this plugin. Properties of the object are explained in the Plugins API endpoints.

Themes API EndpointsLink to this section

The Themes API works in a similar way. The relevant endpoints are:

https://directory.classicpress.net/wp-json/wp/v2/themes

https://directory.classicpress.net/wp-json/wp/v2/themes/?byslug={slug}

Last updated on June 9th, 2025 at 08:54 pm