If you are

  • WordPress Theme Developer,
  • and just have created your very first Theme,
  • and want to release that Theme on WordPress.org

then this article is for you.


How to release own developed Theme on WordPress.org?

 

Creation of WordPress Theme

To discuss all the points, an example of a live Wordress Theme will be used here: Moyna : https://wordpress.org/themes/moyna

Download it, and install it. all WordPress Themes must be kept at this location always : 


  • www.example.com/wp-content/themes
  • C:\xampp\htdocs\test\wp-content\themes

 

Obviously a Theme may contain a lot of files and folders. But to create a minimal, conventional WordPress.org theme, you need at least two files in your theme folder:

  1. style.css - This file contains the theme's metadata and basic styling.
  2. index.php - This is the main template file for the theme.

 

Here’s what each of these files should include:

 

1. style.css

This file defines the theme’s name, author, version, and other metadata that WordPress reads when displaying the theme in the admin area.

 

/*
Theme Name: Moyna
Theme URI: https://store.devilhunter.net/wordpress-theme/moyna/
Author: Tawhidur Rahman Dear
Author URI: https://www.tawhidurrahmandear.com/
Description: a Responsive, SEO-Friendly WordPress Theme for Bloggers, Minimalist, Photographers and also WooCommerce Integrated.
Requires at least: 6.1
Tested up to: 6.6
Requires PHP: 7.4
Version: 1.7
License: GNU General Public License
License URI: https://www.gnu.org/licenses/gpl-3.0.en.html
Text Domain: moyna
Tags: blog, portfolio, photography
*/

 

You should change the text provided in the sample above. This file can also include styling rules, though it’s common to organize styles into additional CSS files.

 

2. index.php

This is the main template file that WordPress uses to render the front-end. For a minimal theme, this file can be as simple as:

 

<?php
   /**
    * Main template file for displaying content.
    */

   
   if ( have_posts() ) {
       while ( have_posts() ) {
           the_post();
           the_title('<h2>', '</h2>');
           the_content();
       }
   } else {
       echo '<p>No posts found</p>';
   }
   ?>

 

Optional Additional Files

While style.css and index.php are the bare minimum for a theme, most themes include additional files to enhance functionality, such as:

  • header.php and footer.php: Used to split header and footer sections into separate files.
  • functions.php: Used to add custom functionality, such as registering menus or adding theme support.
  • single.php and page.php: Template files for single posts and pages.

These optional files aren’t required but are typically added to create a full-featured theme. 


Theme URI means you should have a personally hosted webpage highlighting your Theme. If you don't have any special page for this, leave it blank. Author URI means developer's homepage. It may be your company homepage like: https://store.devilhunter.net or even may be your own Facebook profile address.



here is the sample of a readme.txt file from Moyna:


=== Moyna ===

Contributors: tawhidurrahmandear (Your WordPress.org username)
Requires at least: 6.1   (Here 6.1 means WordPress 6.1 version)
Tested up to: 6.6   (Here 6.6 means WordPress 6.6 version)
Requires PHP: 7.4   (may be latest PHP version, if your Plugin works)
Stable tag: 1.0   (The version of your own WordPress Plugin that you have just created)
Tags: blog, photo blog, author blog, personal blog, simple blog, writer, writer blog, masonry, minimal, modern, responsive, typography options, styling options, global settings, woocommerce integration, mobile ready, tawhidur rahman dear
License: GNU General Public License
License URI: https://www.gnu.org/licenses/gpl-3.0.en.html


== Description ==

Moyna is a Responsive, SEO-Friendly, Speed optimized FSE WordPress Theme for Bloggers, Minimalist, Photographers with Cross Browser Compatibility, Typography, Styling options, and also WooCommerce Integrated. (Type Description here)


== Installation ==

1. Log-in to WordPress Dashboard, and Go to Appearance > Themes. Now click on "Add New Theme"
2. Browse the Zipped file, and click on click on "Install Now".
3. When WordPress shows the message, "Theme installed successfully", then Click on "Activate"
4. Go to Appearance > Themes. Now click on "Customize"
5. You will also get further instruction in Theme page
6. Go to https://store.devilhunter.net/wordpress-theme/ to understand the whole process with screenshots.


== Copyright ==

Moyna FSE WordPress Theme, (C) Tawhidur Rahman Dear.
(Change name)
Moyna is distributed under the terms of the GNU GPL.

=== Credits ===

{{{
Image for Header background (Edited version included)
License: CC0 Public Domain
License URL: https://creativecommons.org/publicdomain/zero/1.0/
Source: https://pxhere.com/en/photo/1087225
}}}

{{{
12 Images for Blogs
License: CC0 Public Domain
License URL: https://creativecommons.org/publicdomain/zero/1.0/
Sources:
Blog 7. https://pxhere.com/en/photo/792967
Blog 8. https://pxhere.com/en/photo/593466
Blog 9. https://pxhere.com/en/photo/444
Blog 10. https://pxhere.com/en/photo/1061655
Blog 11. https://pxhere.com/en/photo/777765
Blog 12. https://pxhere.com/en/photo/750184
}}}



Font Heebo, Designed by Oded Ezer
This font is licensed under the SIL Open Font License (OFL).
https://openfontlicense.org/

Font Protest Riot, Designed by Octavio Pardo
This font is licensed under the SIL Open Font License (OFL).
https://openfontlicense.org/

Font Ubuntu, Designed by Dalton Maag
This font is licensed under the Ubuntu Font License (UFL).
https://ubuntu.com/legal/font-licence


== Changelog ==

= 1.6 - 2024-04-09 =
- Update - WooCommerce, Styles, Language

= 1.6 - 2024-04-09 =
- Fix - Minor Change according to WordPress.org Guidelines

= 1.1 - 2024-02-25 =
* Initial release



If you plan to create a Block Theme

Creating a block-based theme for WordPress.org has slightly different requirements from traditional themes. At a minimum, a block theme must include:

  1. style.css - For theme metadata and styling.
  2. theme.json - The configuration file for theme settings, global styles, and customizations.
  3. index.php - A fallback template file for rendering content.
  4. templates/index.html - The default block template for rendering the homepage or main template.

Here’s what each of these files does in a minimal block theme:

 

1. style.css

This file primarily holds theme metadata, though it can also include global styling if needed. This style.css is still same as the previous example.

 

2. theme.json

The theme.json file defines global settings and styles for block-based themes. This is essential for customizing colors, typography, spacing, and other settings.

Here’s an example of a minimal theme.json:

 
{ "version": 2, "settings": { "color": { "palette": [ { "slug": "primary", "color": "#0073aa", "name": "Primary" }, { "slug": "secondary", "color": "#005075", "name": "Secondary" } ] }, "typography": { "fontSizes": [ { "slug": "small", "size": "12px", "name": "Small" }, { "slug": "large", "size": "36px", "name": "Large" } ] } } } 
 

This example defines a simple color palette and font sizes that users can access in the editor.

 

3. index.php

In block themes, index.php acts as a fallback template. This file doesn’t usually contain much content but is required to load the theme in case block templates aren’t available:

 
<?php // Silence is golden.

 

4. templates/index.html

This file, located in a templates folder, is the default block template used to render the homepage or main content. You can add more templates as needed, but index.html is essential.

 

An example templates/index.html could look like this:

 
<!-- wp:paragraph --> <p>Welcome to my block theme!</p> <!-- /wp:paragraph --> <!-- wp:post-title /--> <!-- wp:post-content /-->

This file uses WordPress block markup, and any content added here will render on the site.

 

Optional Files for Expanded Block Themes

  • parts/: Add a parts folder to include reusable templates like headers or footers (e.g., header.html and footer.html).
  • functions.php: Useful for adding custom functions or theme supports (e.g., custom logos).
  • screenshot.png: An image of your theme preview for display in the theme selector.

These four files (style.css, theme.json, index.php, and templates/index.html) are the minimum requirements for a block-based theme to work in WordPress.



⚠️ Theme name will be theme slug ⚠️

Here  

  • Theme name is Moyna and 
  • the slug is   https://wordpress.org/themes/moyna/

 

Although after approval, you can change the Theme name to something else, but should be related. But the slug will always be the same.



Submit Theme to WordPress.org for Review

Step 1 : Log-in to WordPress.org from https://login.wordpress.org


Submit Theme to WordPress.org

 

 

Step 2 : Submit your theme for review from https://wordpress.org/themes/getting-started/ and before doing that read instructions. There may be an important update, which you should know.



Submit your theme for review from https://wordpress.org/themes/developers and before doing that read instructions.


 

Step 3 : You will get upload link there. Open that webpage. Read from top to bottom, and upload and submit the Theme. It must be zip folder just in the way you download other Themes. 

 

 

When you upload and submit the WordPress Theme, It must be zip folder just in the way you download other WordPress Themes

If there is any problem, Theme Review Team will inform you for corrections. Once the Theme is approved, you will be notified via email. Email subject should be like this: [WordPress Themes] Moyna has been approved! Sender email should be themes@wordpress.org 

 

Live Preview will be instantly available like this: https://wp-themes.com/moyna



If not approved, then how to upload edited Theme?

WordPress.org Theme Review Team will send you email regarding the issue with link to to understand the nature of the problems. They will guide you properly, and you should follow the instructions properly. When you are finished, you will have to upload the Theme in the very same way. Simply increase the version inside of style.css and upload the theme-name.zip file again, just like you do with a new theme.



How to update own WordPress Theme version?

When the Review Team finally approves your Theme, it will be live instantly. After that, If you plan to upload a theme update, simply increase the version inside of style.css and upload the theme-name.zip file again, just like you do with a new theme. 
 
 
 
Congratulations! You have completed your "How to release own developed Theme on WordPress.org?" course.