To have your theme listed in the ClassicPress Directory, you must first register, for which you will need to provide a GitHub Username (or a GitHub Org Name). You will then need to activate Two Factor Authentication, after which we will review your registration. You will receive an email when it has been approved.
You may then use the Software Submission Form to submit your theme to the Directory. You will need to ensure that the code for your theme is stored in a GitHub repository associated with the GitHub Username (or GitHub Org Name) you previously supplied when you registered.
You will also need to ensure that your theme provides the following three required items:
Required Headers
- Theme Name: The name of your theme, which will be displayed in the ClassicPress Theme Directory and in the site’s dashboard. It should be unique.
- Description: A short description of the theme, as displayed in the ClassicPress Theme Directory and in the site’s dashboard. Keep this description to fewer than 140 characters.
This header is unnecessary if using aREADME.md
file. - Version: The current version of the theme (e.g. 1.0.3 or 2.1.1); for ClassicPress themes the version should follow semantic versioning.
- Requires PHP: The minimum required PHP version.
- Requires CP: The lowest ClassicPress version that the theme will work on.
This field only works if the theme is stored on the ClassicPress Theme Directory.
If set, theme updates from WordPress are disabled, in favour of updates from the ClassicPress Directory Integration plugin (if installed).
Add the minimum supported ClassicPress version without the patch number, since it doesn’t affect compatibility in SemVer. For example:Correct: 1.5 Incorrect: 1.5.0
- Premium URI: Required for any themes that sell a “Premium” version or upgrade. It must be a complete URI, starting with
https://
to the sales page.
The headers should be listed (one line for each header) at the top of the style.css
file like this:
/*
Theme Name: Name of your theme
Description: (this header is unnecessary if using a README.md file)
Version: 1.0.3
Requires PHP: 7.4
Requires CP: 1.4
Premium URI: https://website.com/premium-theme/
...
*/
You may include other headers, but the ClassicPress Directory will ignore them.
As indicated by the ellipses (3 dots), you should typically include other headers too, though their presence serves different purposes and, as mentioned before, will be ignored by the ClassicPress Directory.
We can also read the headers and description if supplied in the theme’s readme.txt
file, but this will work only if it includes the Requires CP
header.
It may also lead to a less pleasing formatting of the description of your theme in the ClassicPress Directory. So relying on this method is not recommended.
Folder/File Structure
Themes require a specific folder/file structure to work correctly in ClassicPress. This will look familiar if you know WordPress theme file structures.
Themes require two files, while all other files are optional:
index.php
style.css
In your theme, your required headers go in the style.css
. It must be placed in the root directory of your theme, not the /assets
or /css
directory your theme may have.
You must ensure your zip file expands into the correct directory, which doesn’t contain the version numbers. The wrong directory name will cause validation issues when submitting your theme to be listed in the directory—for example, theme-name.zip
:
Correct:/theme-name
Incorrect:/theme-name-1.2.0
Releases
To manage versioning of your themes correctly and automatically, you must use GitHub’s Releases to release each version. This ensures you can get the correct download URL (see below). ClassicPress specific release instructions can be found here.
Download URL Format
The ClassicPress Directory will only accept the following format of the download URL:
https://github.com/username/theme-name/releases/download/v4.0.0/theme-name-4.0.0.zip
This means you must upload your theme’s zip file as an asset when publishing a release on GitHub. Auto-generated assets will have a different download URL and are not accepted.
The download URL from the WordPress.org repository will not be accepted.
Need help? Start a discussion in the forum, and we’ll be happy to help.