Submitting, maintaining
and growing a plugin on
wp.org
Brian Hogg
@brianhogg
brianhogg.com
Ask Questions
Plugins
https://brianhogg.com/plugins
Courses
https://brianhogg.com/courses
Learning Center
https://brianhogg.com/blog
WordCamp Hamilton
https://hamilton.wordcamp.org/
Who Are You?
Submitting, maintaining and growing a plugin on wp.org
Submitting, maintaining and growing a plugin on wp.org
Getting the Plugin
Ready to Submit
readme.txt
readme.txt
/your-plugin
readme.txt
Submitting, maintaining and growing a plugin on wp.org
readme.txt
• Short and long description
• Installation notes
• Frequently Asked Questions (FAQs)
• Reference to screenshots
• License (GPL)
• Changelog
Don’t spam the ‘tags’
Look at other plugin
readme.txt files
Validate your
readme.txt file before
submitting!
Submitting, maintaining and growing a plugin on wp.org
wp.org Rules
100% GPL Compatible
No Tracking Without
Explicit Consent
No credits or links back
to your site on the front-
end
No nags or non-
dismissible alerts
Nothing Illegal
… to disable or remove any
plugin from the directory, even for
reasons not explicitly covered by
the guidelines.
Releasing Your Plugin
Releasing Your Plugin
• Ensure readme.txt is present and
validated
• Package the zip file
• Remove .git folder
• Submit the plugin for review
• Push code up to SVN
Test with WP_DEBUG
turned on
wordpress.org/plugins/a
dd
https://login.wordpress.org/register/
No auto replies from
your email address
Submitting, maintaining and growing a plugin on wp.org
Submitting, maintaining and growing a plugin on wp.org
Your Plugin Name
your-plugin-name
Submitting, maintaining and growing a plugin on wp.org
https://plugins.svn.wordpress.org/your-plugin-name
SVN Repository
ttps://plugins.svn.wordpress.org/your-plugin-name your-fold
SVN Repository
SVN Repository
/your-folder-name
trunk/
SVN Repository
/your-folder-name
trunk/
chimpbridge.php
includes/
...
svn add trunk/*
SVN Repository
svn ci -m 'Adding first version of my plugin'
SVN Repository
https://wordpress.org/plugins/your-plugin-name
Plugin is released!
Add screenshots, icon,
and header images
SVN Repository
/your-folder-name
assets/
trunk/
chimpbridge.php
includes/
...
SVN Repository
/your-folder-name
assets/
screenshot-1.png
screenshot-2.png
trunk/
chimpbridge.php
includes/
...
Submitting, maintaining and growing a plugin on wp.org
svn add assets/*
SVN Repository
svn ci -m 'Adding screenshots'
SVN Repository
Keeping the plugins up to
date
Releasing a New
Version
1. Make changes to your plugin code
2. Update version number in your
readme.txt and in your plugin
header
3. Add a line to the Changelog section
of your readme.txt
4. svn add …your file(s)…
5. svn ci -m ‘your message for new version’
Tagging the New
Version
1. cd ..
2. svn cp trunk tags/1.1
3. svn ci -m ‘tagging version 1.1’
Tagging the New
Version
/your-folder-name
assets/
trunk/
your-plugin-name.php
...
Tagging the New
Version
/your-folder-name
assets/
tags/
1.1/
trunk/
your-plugin-name.php
...
Tagging the New
Version
/your-folder-name
assets/
tags/
1.1/
1.2/
trunk/
your-plugin-name.php
...
Increase version number
for every release
SVN + Git
SVN Repository
/your-folder-name
assets/
trunk/
your-plugin-name.php
...
SVN Repository
/your-folder-name
assets/
trunk/
.git
your-plugin-name.php
...
ianhogg.com/maintain-update-free-wordpress-org-hosted-plugin-
Don’t use SVN as your
development repo
Tips on your plugin
code
Don’t include your
CSS/JavaScript
everywhere
https://brianhogg.com/jswp
Don’t include your own
version of jQuery
https://brianhogg.com/jswp
Do include a PHP/WP
version check
https://github.com/unfulvio/wp-requirements
Do use apply_filters() and
do_action() where it makes
sense
Do make your plugin
translatable with _ _()
Do add a plugin help
page
Submitting, maintaining and growing a plugin on wp.org
Submitting, maintaining and growing a plugin on wp.org
Do test, test, test
Getting more users for
your plugin
Word of Mouth / Social
Youtube how-to videos
Frequent Updates
https://freemius.com/blog/seo-on-new-plugin-repository/
It’s hard
Submitting, maintaining and growing a plugin on wp.org
Worth It
Plugins
https://brianhogg.com/plugins
Selling Plugins
https://sellingplugins.com
Plugins for Beginners
https://pluginsforbeginners.com
Learning Center
https://brianhogg.com/blog
WordCamp Hamilton
https://hamilton.wordcamp.org/
Questions?

More Related Content

ODP
CPAN Module Maintenance
PPTX
TYPO3 & Composer
PDF
Jenkins to Gitlab - Intelligent Build-Pipelines
PPTX
Composer
PPTX
Developing Cross Platform Applications with Golang
PDF
MySQL / PHP Server
PDF
Hot Code Replacement - Alexei Sholik
PPTX
Golang Channels use cases
CPAN Module Maintenance
TYPO3 & Composer
Jenkins to Gitlab - Intelligent Build-Pipelines
Composer
Developing Cross Platform Applications with Golang
MySQL / PHP Server
Hot Code Replacement - Alexei Sholik
Golang Channels use cases

Similar to Submitting, maintaining and growing a plugin on wp.org (20)

ODP
Practical SVN for PHP Developers
PDF
Begin your journey to be a Selenium Committer - Valencia 2025 - Pallavi Sharm...
PPT
Introduction to Subversion and Google Project Hosting
PPT
SVN Usage & Best Practices
PPT
Rails Plugins 1 Plugin
KEY
groovy & grails - lecture 10
PDF
Continuous Delivery in OSS using Shipkit.org
ODP
WordPress Plugin Development For Beginners
PPT
Totalsvn Usage And Administration By Gopi
ODP
Managing Plone Projects with Perl and Subversion
PDF
[WroclawJUG] Continuous Delivery in OSS using Shipkit
PDF
Create a PHP Library the right way
PDF
Mpeg guide
ODP
Develop FOSS project using Google Code Hosting
PPTX
Getting started with CFEngine - Webinar
PDF
Selenium Tips & Tricks, presented at the Tel Aviv Selenium Meetup
PDF
Django is a high-level Python web framework that enables rapid development of...
PPTX
Bitbucket git-bamboo-jira
PDF
Version control with git
PPTX
ADF in action 1.2
Practical SVN for PHP Developers
Begin your journey to be a Selenium Committer - Valencia 2025 - Pallavi Sharm...
Introduction to Subversion and Google Project Hosting
SVN Usage & Best Practices
Rails Plugins 1 Plugin
groovy & grails - lecture 10
Continuous Delivery in OSS using Shipkit.org
WordPress Plugin Development For Beginners
Totalsvn Usage And Administration By Gopi
Managing Plone Projects with Perl and Subversion
[WroclawJUG] Continuous Delivery in OSS using Shipkit
Create a PHP Library the right way
Mpeg guide
Develop FOSS project using Google Code Hosting
Getting started with CFEngine - Webinar
Selenium Tips & Tricks, presented at the Tel Aviv Selenium Meetup
Django is a high-level Python web framework that enables rapid development of...
Bitbucket git-bamboo-jira
Version control with git
ADF in action 1.2
Ad

More from Brian Hogg (12)

PPTX
Preparing a WordPress Plugin for Translation
PPTX
Your WordPress Freelance Business Site
PDF
Things I've Learned About Creating a Premium Plugin
PDF
WordPress 4.4 and Upgrading Your Site (without the tears...)
PPTX
WordCamp Ann Arbor 2015 Introduction to Backbone + WP REST API
PPTX
Using Actions and Filters in WordPress to Make a Plugin Your Own
PPTX
Things I learned about Stress and Imposter Syndrome in Tech
PDF
Introduction to backbone presentation
PPT
Pricing and Marketing for Freelancers - How to?
PPTX
Introduction to test driven development
PPT
Working with Geolocation in Wordpress
PPT
Intro to Web Apps using HTML5 and Javascript
Preparing a WordPress Plugin for Translation
Your WordPress Freelance Business Site
Things I've Learned About Creating a Premium Plugin
WordPress 4.4 and Upgrading Your Site (without the tears...)
WordCamp Ann Arbor 2015 Introduction to Backbone + WP REST API
Using Actions and Filters in WordPress to Make a Plugin Your Own
Things I learned about Stress and Imposter Syndrome in Tech
Introduction to backbone presentation
Pricing and Marketing for Freelancers - How to?
Introduction to test driven development
Working with Geolocation in Wordpress
Intro to Web Apps using HTML5 and Javascript
Ad

Recently uploaded (20)

PDF
sbt 2.0: go big (Scala Days 2025 edition)
PDF
Co-training pseudo-labeling for text classification with support vector machi...
PPTX
AI-driven Assurance Across Your End-to-end Network With ThousandEyes
PPTX
Custom Battery Pack Design Considerations for Performance and Safety
PDF
Early detection and classification of bone marrow changes in lumbar vertebrae...
PDF
Transform-Quality-Engineering-with-AI-A-60-Day-Blueprint-for-Digital-Success.pdf
PDF
Dell Pro Micro: Speed customer interactions, patient processing, and learning...
PPTX
future_of_ai_comprehensive_20250822032121.pptx
PDF
Comparative analysis of machine learning models for fake news detection in so...
PDF
MENA-ECEONOMIC-CONTEXT-VC MENA-ECEONOMIC
PDF
Rapid Prototyping: A lecture on prototyping techniques for interface design
PDF
Aug23rd - Mulesoft Community Workshop - Hyd, India.pdf
PDF
IT-ITes Industry bjjbnkmkhkhknbmhkhmjhjkhj
PDF
NewMind AI Weekly Chronicles – August ’25 Week IV
PPTX
Module 1 Introduction to Web Programming .pptx
PPTX
MuleSoft-Compete-Deck for midddleware integrations
PPTX
Internet of Everything -Basic concepts details
PDF
INTERSPEECH 2025 「Recent Advances and Future Directions in Voice Conversion」
PDF
Auditboard EB SOX Playbook 2023 edition.
PDF
5-Ways-AI-is-Revolutionizing-Telecom-Quality-Engineering.pdf
sbt 2.0: go big (Scala Days 2025 edition)
Co-training pseudo-labeling for text classification with support vector machi...
AI-driven Assurance Across Your End-to-end Network With ThousandEyes
Custom Battery Pack Design Considerations for Performance and Safety
Early detection and classification of bone marrow changes in lumbar vertebrae...
Transform-Quality-Engineering-with-AI-A-60-Day-Blueprint-for-Digital-Success.pdf
Dell Pro Micro: Speed customer interactions, patient processing, and learning...
future_of_ai_comprehensive_20250822032121.pptx
Comparative analysis of machine learning models for fake news detection in so...
MENA-ECEONOMIC-CONTEXT-VC MENA-ECEONOMIC
Rapid Prototyping: A lecture on prototyping techniques for interface design
Aug23rd - Mulesoft Community Workshop - Hyd, India.pdf
IT-ITes Industry bjjbnkmkhkhknbmhkhmjhjkhj
NewMind AI Weekly Chronicles – August ’25 Week IV
Module 1 Introduction to Web Programming .pptx
MuleSoft-Compete-Deck for midddleware integrations
Internet of Everything -Basic concepts details
INTERSPEECH 2025 「Recent Advances and Future Directions in Voice Conversion」
Auditboard EB SOX Playbook 2023 edition.
5-Ways-AI-is-Revolutionizing-Telecom-Quality-Engineering.pdf

Submitting, maintaining and growing a plugin on wp.org

Editor's Notes

  • #3: My answer might be wait and I’ll get to that, but would rather your questions while they’re on your mind then all at the end.
  • #5: have created a plugin, even a small one for a client project have a plugin release on the wordpress.org repo already Not going through how to actually code a plugin in this talk, I’m assuming you already have one, but hopefully this will still be useful to keep the process in mind as you’re creating one
  • #6: Event Calendar Newsletter story + startup hub in Hamilton, app created on the couch as drunked people threw darts here above their head. New definition of extreme Programming
  • #7: I waited until I sobered up to publicly release the plugin (and you probably should too… “don’t drink and launch”?) but releasing and maintaining it had some hurdles and things to think about… which is what I’ll be going over today.
  • #9: One thing we need to add to our plugin is a readme.txt file, which is required to submit to the wordpress.org plugin directory.
  • #10: The readme.txt file goes inside the root of your free plugin folder, and is just called… readme.txt
  • #11: You can see a sample readme.txt that you can copy and paste as a starting point, over on wordpress.org.
  • #12: This file includes things important things like the short and long description of our plugin Any installation notes to install your plugin A list of frequently asked questions or FAQs A description of any screenshots you include inside the assets folder of the SVN repository on wordpress.org once your plugin is approved And also a changelog detailing what changes have been made for each new version you release
  • #13: …don’t spam the tags by adding more than 12 tags, or putting any competitors’ plugins as a tag. This can get you removed from the wordpress.org plugin directory as it looks like you’re trying to game the plugin search system. You really don’t need more than 12, and just pick keywords that are relevant to your plugin.
  • #14: look at other plugin readme.txt files to get ideas on what tags you might add for your own plugin
  • #15: And last but not least don’t forget to validate your readme.txt file before you submit! You can edit it later before you do your initial push of your plugin, but it should validate for the plugin review team to see.
  • #16: It’s easy to do using the readme.txt validator over on wordpress.org
  • #17: There’s a number of rules to consider based on what your plugin is doing
  • #18: This includes any libraries, images, CSS, etc you include And you should include the images/CSS/javascript within the plugin, not hosted on your own site (in case it goes down and because you can track usage)
  • #19: No tracking of any kind without consent, even just what site URL the plugin is installed on It just can’t be turned on by default Wisdom plugin or Freemius Insights
  • #20: Can do this after getting their permission though Can have links to your site on your settings page in the admin area no problem
  • #21: Things like asking users for a 5-star review of your plugin, can do this at the appropriate time but must be dismisable
  • #22: No bitcoin mining After all this and other rules, they still reserve the right…
  • #23: The plugin directory team is awesome, they’re volunteers, and they really aren’t trying to make enemies and delete plugins at random. But you’re playing in their sandbox and they can remove your plugin at any time.
  • #24: There’s a number of rules to consider based on what your plugin is doing to keep in mind
  • #25: Ensure your readme.txt file is present and validated Package up the free plugin into a zip file, and be sure to remove the .git folder if you’ve already set up version control Submit the plugin for review Then once it’s approved, push the code up to SVN
  • #26: Before you submit you’ll want to make sure you have tested your plugin with WP_DEBUG turned on, to make sure there’s no warnings or errors.
  • #27: You’ll submit the plugin over on wordpress.org slash plugins slash add If you don’t already have a WordPress.org account, you’ll need to create one over on login.wordpress.org slash register.
  • #28: You can’t have any auto replies, like vacation messages, come from the email address in the wordpress.org account you’re using to submit the plugin. Otherwise you’ll get a warning if you’re lucky, but likely your plugin will be removed.
  • #29: Once you’ve created your account or logged in you’ll see the submission form. There’s just the 3 fields, the plugin name, a description of your plugin which you could grab from your readme file, and a link to download the zip. You can upload this wherever…
  • #30: Put the zip file wherever, easiest would probably be uploading it to one of your WordPress websites and grabbing the link to it from there.
  • #31: As they note on the form, the name of your plugin will get turned into a slug like this. While you could change the name of your plugin later, that url slug cannot be edited, so make sure there’s no typos and you’re happy with that name before submitting.
  • #32: Once you’ve submitted the form, now you wait. You can see how many plugins are in the queue waiting for review at the top of that form, but there’s no guaranteed timeline or anything. The plugin review team are volunteers so be patient.
  • #33: Once approved, you’ll get an SVN repository to submit your plugin files to with your plugin slug there. You’ll need to download and install SVN if you don’t have it already.
  • #34: You’ll start your initial submit by opening up terminal and typing svn co (for checkout), then the URL of your repository. This would be somewhere on your computer outside of your WordPress installation, in your-folder-name which can be whatever you want to call it.
  • #35: Inside of the folder you’ll have another folder called trunk. Inside of that…
  • #36: you’ll copy all your plugin files into it.
  • #37: Then back in the terminal window, type svn add trunk forward slash star, to add all of your plugin files.
  • #38: Lastly, you’ll commit and push the files up to wordpress.org by typing svn ci (for commit), -m for message, then in quotes your commit message. You should receive a message that the files were successfully committed, and after a few minutes if you go to…
  • #39: your plugin’s page on wordpress.org, you should see your plugin there with a link to download.
  • #40: Your free version is now released and available to anyone who searches for a WordPress plugin in Plugins > Add New
  • #41: You should also add at least a screenshot or two into the assets folder, and optionally an icon and header images if you have them or would like to make them. All of these make the plugin stand out when users are searching for it. There’s a link below the video with instructions on how to do that and what format it should be in…
  • #42: but basically in your SVN repository you’ll see an assets folder. Inside of that you’d put screenshots and name them
  • #43: screenshot-1.png, screenshot-2.png, and so on. You could also use .jpg files if you’d rather.
  • #44: Then in the readme.txt file, update the screenshots section with a description of each one.
  • #45: Then back in the terminal, add the assets to svn…
  • #46: And commit them along with the changes to your readme.txt file, with another svn ci command.
  • #49: 1.1 —- or whatever your new version number is
  • #50: Started with this…
  • #51: Copied trunk into tags/1.1
  • #52: Will keep doing that for future versions. Don’t HAVE to do this but it’s best practice to make it easy to get older versions of your plugin if needed (for testing purposes) and keep stuff organized
  • #53: Otherwise people won’t see your changes
  • #54: While you need to ultimately use SVN to push your changes up to wordpress.org, you can also use git during your normal development, then pull those changes into your SVN trunk folder
  • #55: Currently you have a repository with trunk folder, and your free plugin inside.
  • #56: After setup, you’ll also have a git repository inside of the trunk folder. This will make it easy to pull your changes from the git repo into SVN. Don’t have time to go through the whole process but that article gives all the details… and go through the exact commands for common tasks
  • #57: This causes the wordpress.org server to recreate all your .zip files for all your versions
  • #59: … If it’s not needed. ie. you have an admin page for your plugin settings or whatever, just add your css/js there
  • #60: … If it’s not needed. ie. you have an admin page for your plugin settings or whatever, just add your css/js there
  • #61: If you’re using newer features of PHP
  • #62: Let’s people extend your plugin without having to hack your codez
  • #63: You don’t have to do the translations! Others might do it for you
  • #64: For example with The Events Calendar Shortcode I added one underneath the Events menu of The Events Calendar
  • #65: And when you click on it….
  • #66: … you get to this Beautifully designed help page
  • #67: Don’t let this stop you from releasing a plugin though. Even major plugins can have major issues. Jetpack 4.x then 4.0.1 still broke things, finally 4.0.2 fixed. Just be available… don’t push a release, forget to include a required file, then go to a concert with terrible cell reception… not that I’VE ever done this… Breaking benjamin is a great band by the way
  • #69: They can do to Plugins > Add New and give it a go, very simple install process. Takes time but super valuable.
  • #71: Not all of these tips on the freemius article are recommended and could get you banned, like creating a new WordPress account username with the keywords you want… and it says so
  • #72: If my amazing write meow plugin…
  • #73: … still has fewer than 10 installs it’s a pretty hard thing to do. Older plugins are much more favoured over new ones.
  • #74: Takes time, but nothing beats being able to tell people they can go to Plugins > Add New, search for your plugin, and find it :)