How To Publish To The WordPress Plugin Repository


One of the considerations that all WordPress plugin developers have to make is how to actually publish their work. Many premium plugins opt to run their own website, documentation, and purchase gateway, but if you're looking to publish a free plugin or perhaps a lite variation of a premium plugin then using the WordPress plugin repository is a great option. offers source control, stats tracking, and automatically notifies users of updates all for free. It doesn't hurt that the site has solid ranking with search engines either especially since your plugin can benefit!

In this article, we'll look at how to setup a WordPress plugin repository and maintain your project through its development life-cycle. Note that this article assumes you have basic familiarity with Subversion.

Step 1 Requesting Access

Before requesting access for your project, you need to have an account with They're free and easy to setup.

First, navigate to this page and provide the requested information. Once your account is setup and confirmed, you can setup the repository. Navigate to the WordPress Developer Center. From the homepage, click on Extend and Plugins. Next, click on "Add Your Plugin:"

On the next screen, you will be prompted to enter in your plugin name, a short description, and the URL to the project's homepage. This doesn't have to be in-depth, but here are a few tips that will serve you will in requesting access:

  • Make sure the plugin name is final. Once you're granted access to the repository, you can't change the name. Think strategically about what you want to name the plugin, too. For best results, it's often best to name the plugin something simple that is related to what users will search on in a search engine.
  • Don't spend to much time drafting a description of your plugin at this point. A concise, one sentence description is fine. The README file for the plugin will provide more detail once you've launched the project.
  • The URL to your plugin's homepage doesn't necessarily have to be valid but make sure that whatever URL you specify is where the plugin's homepage will actually live.

Once you have provided the information, send the request. You will receive in an email with the credentials for your repository typically within 24 to 48 hours after which you can make your first commit.

Step 2 Setting Up The Repository

After you have received the repository URL, you can do your initial checkout. Using your favorite subversion client (I'm using TortoiseSVN in this tutorial), perform an checkout using the repository's URL:

This will create a directory with the plugin name that you specified in the first step of this tutorial. It will also initialize the branches, tags, and trunk directories:

A quick note on the directory structure:

  • The trunk of the repository is your working directory. This is the directory in which you do all of your main development.
  • Tags are versions, or snapshots, of the trunk at specific points in its development cycle. Often times, you can tag the trunk each time you want to perform a release.
  • The branch directory is a copy of the trunk at a certain point in time that's used for heavy development. If you're going to do heavy development, it's best to branch - this way, you preserve the quality of the trunk.

You can read much more about the subversion directory structure here.

Step 4 Committing Changes

At this point, you can begin working out of the repository. If this is your first time working with it, your trunk directory should be empty. If you've been working on your plugin prior to initializing the directory, then go ahead and copy the files into the trunk now; otherwise, feel free to begin working on your plugin.

Once you have finished copying or have begun working on the plugin, you will need to add the files to source control. To do this, execute the add command:

This will instruct subversion to begin tracking these files. Next up, run the commit command:

This step will actually submit the plugin's codebase to the WordPress plugin repository.

Of course, you have not yet actually published your plugin until you tag it. Prior to doing that, make sure that you have properly setup your plugin's header and it's README file. You can also read up more on this in the Writing Maintainable WordPress Widgets series.

Step 3 Tagging and Releasing

Assuming that you have completed a working version of your plugin and setup the header and README, it's time to release a version of your plugin. To do so, execute the Branch/Tag [TODO] command on the trunk directory.

Before doing so, make sure that you update the version tag in the plugin's header:

And update the stable tag of the README, too:

Next, commit the changes to the trunk.

After that, you're ready to tag:

While doing so, Subversion will ask you which directory you want to tag the version. It's very important to make sure you update the path of the plugin to the tags path - most Subversion clients will populate the destination with the trunk direction. This is incorrect - instead, you will want to change the path to /tags/1.0 (but if you're tagging 1.5 or 2.0 then you'll change the number):

At this point, you're plugin has been checked into source control and been tagged as a specific version. Within 20 minutes, your plugin should show up in the WordPress Plugin repository at the URL that you specified when requesting the repository.

Checking in future versions of the plugin works the same as in the previous steps. Over time, you'll be able to continue developing the plugin and tracking download statistics from the project page.


That's it! Hopefully by now you've got a good understanding of what it takes to formally publish your plugin through the WordPress plugin repository. We recently looked at how to actually start creating plugins... so you should have a solid foundation to get out there and start creating your own custom plugins! The great thing about all of this is that it helps contribute to the already outstanding platform that is WordPress. The most talented developers and designers that we can get out there creating useful plugins, the better the platform will become!

Related Posts
  • Code
    Choosing the Right Plugin for Your Next WordPress ProjectPlugin icon 400
    Ever needed a plugin for your WordPress-based website? Of course! After all, that's how WordPress is extended, isn't it? If you're a beginner to WordPress, or even a power user, then you're likely familiar with the WordPress plugin repository, premium plugins, and so on. The thing is, there are so many plugins available that do many of the same things, it can be difficult to determine which is best suited for your particular needs. This raises the question: What do you do to find the perfect plugin for a particular need? In this post, we're going to see how to find the best plugin for exactly that.Read More…
  • Code
    Distributing Your Plugins in GitHub with Automatic UpdatesSensorsthumbnail
    This article will teach you that, with a little creative coding, you can host your own WordPress plugins in GitHub while still retaining the automatic update feature.Read More…
  • Code
    An Introduction To Deploying WordPress with MinaImage400
    As a PHP application, WordPress is usually deployed by a very old method: uploading files via FTP. We have some deployment tools, but they often requires some type of Ruby skill. For example, one popular, powerful tool is Capistrano, but it's also very heavy with many Ruby/Rails related features. I also think that it's little bit tricky to install Capistrano for a PHP developer without any Ruby knowledge. So what options do we have as WordPress developers? In this tutorial, I will introduce you Mina: A small, light tool aims to fast deployment and server automation.Read More…
  • Code
    Displaying Information of a Plugin on Your WebsiteWordpressdotorg plugin api border 400
    In the first part of this article, we discussed how to use built-in functions to communicate with and retrieve plugin details. In this tutorial we will put the theory in action to create a simple plugin which will allow us to display details of any plugin hosted on on our WordPress website using shortcodes.Read More…
  • Code
    Communicating With the Plugin APIWordpressdotorg plugin api border 400
    Over the last few weeks I have been wondering on how to possibly pull data about my plugins hosted on and display it on my website. The first thing that came to mind was "Web Scrapping" but quite frankly this is a lot of work, feels like going back in time, and is not something a good web citizen should do. In some cases, it could be illegal.Read More…
  • Code
    Quick Tip: Deploying a Plugin From Git to WordPress.orgQuick tip deploying a plugin to wordpress org from git
    You're developing a plugin on GitHub, and now you're ready to deploy it to uh-oh, plugin development is done via SVN. Now what? Not to worry, there's a script for that.Read More…