SponsoredHosinger Special Offer

WP+ WordPress Plugin Development

Build WordPress plugins from scratch: actions and filters, shortcodes, settings pages, custom post types, meta boxes, AJAX, REST endpoints, custom tables, cron and blocks.

Releasing a Plugin on WordPress.org

WordPress Plugin Development Lesson 27 of 27 ~3 min read

Overview

Publishing to the WordPress.org plugin directory gives your plugin automatic updates and millions of potential users, and requires a GPL licence, a properly formatted readme.txt, a security review and an SVN repository you release through.

readme.txt

=== GDC Books ===
Contributors: yourwporgusername
Tags: books, library, catalogue, reading, shortcode
Requires at least: 6.4
Tested up to: 6.8
Requires PHP: 7.4
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Manage a catalogue of books with genres, details, a shortcode and a block.

== Description ==

GDC Books adds a Book post type with genres, ISBN and page fields,
a [gdc_books] shortcode, a Book List block and a REST API.

== Installation ==

1. Upload the plugin, or install it from Plugins → Add New.
2. Activate it. Books appear in the admin menu.

== Frequently Asked Questions ==

= Does it work with any theme? =

Yes. Books use your theme's single and archive templates.

== Changelog ==

= 1.0.0 =
* First release.

The directory builds your plugin page entirely from this file. Stable tag tells it which released version to offer users, and Tested up to must be kept current — plugins not tested with recent versions show a warning to users.

Versioning

Use semantic versioning: MAJOR.MINOR.PATCH. Bump PATCH for fixes, MINOR for new features, MAJOR for breaking changes. Every release must update the version in three places, or updates misbehave:

  1. The Version header in gdc-books.php.
  2. Your GDC_BOOKS_VERSION constant.
  3. The Stable tag in readme.txt.

Before you submit

  • Install the official Plugin Check plugin and fix every error it reports — it runs the same checks as the review team.
  • Every input sanitised, every output escaped, every form nonce-checked and capability-checked (lessons 12 and 13).
  • No calls home, tracking or external requests without the user's opt-in.
  • No bundled copies of libraries WordPress already ships, such as jQuery.
  • Everything you bundle — code, images, fonts — is GPL-compatible.
  • Remove all debugging code and error_log() probes.

Submitting and releasing

  1. Zip the plugin and upload it at wordpress.org/plugins/developers/add.
  2. A volunteer reviewer checks it, usually within a few weeks, and emails any required changes.
  3. Once approved, you receive an SVN repository with trunk/, tags/ and assets/ folders.
  4. Copy your code into trunk/, copy it again into tags/1.0.0/, and commit. The Stable tag points users at the tagged copy.
svn checkout https://plugins.svn.wordpress.org/gdc-books gdc-books-svn
cd gdc-books-svn

# Copy the release files into trunk/, then tag it.
svn add --force trunk
svn cp trunk tags/1.0.0
svn commit -m "Release 1.0.0"

Plugin page assets

File (in assets/)SizeShown as
banner-772x250.png772 × 250Plugin page header
banner-1544x500.png1544 × 500High-DPI header
icon-128x128.png128 × 128Search results icon
icon-256x256.png256 × 256High-DPI icon
screenshot-1.png …AnyScreenshots, captioned in readme.txt

Where to go next

You have built a complete, extensible plugin: post types, taxonomies, meta boxes, settings, shortcodes, AJAX, REST, custom tables, scheduled tasks, a widget and a block. Pair it with the WordPress Theme Development path to build the templates that display everything your plugin manages.

Practice

  • Write a complete readme.txt for GDC Books and validate it with the official readme validator.
  • Run Plugin Check and fix every error.
  • Package version 1.0.0 as a zip and install it on a fresh site to confirm it works with no other files present.
Create a free account to save which lessons you've finished. Save my progress