You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Tom McFarlin 08f0d9a30b updating a reference to the plugin slug 9 years ago
plugin-name updating a reference to the plugin slug 9 years ago
.gitignore Improved gitignore based on h5bp 11 years ago updating a reference to the plugin slug 9 years ago updating the README file 9 years ago

WordPress Plugin Boilerplate

The WordPress Plugin Boilerplate serves as a foundation and aims to provide a clear and consistent guide for building your WordPress plugins.


  • The Plugin Boilerplate is fully-based on the WordPress Plugin API.
  • Uses PHPDoc conventions to document the code.
  • Example values are given, so you can see what needs to be changed.
  • Uses a strict file organization scheme to make sure the assets are easily maintainable.
  • Note that this boilerplate includes a .pot as a starting translation file.


The WordPress Plugin Boilerplate includes the following files:

  • This README, a ChangeLog, and a gitignore file.
  • A subdirectory called plugin-name


  1. Copy the plugin-name directory into your wp-content/plugins directory
  2. Navigate to the Plugins dashboard page
  3. Locate the menu item that reads Plugin Name
  4. Click on Activate

This will activate the WordPress Plugin Boilerplate. Because the Boilerplate has no real functionality, nothing will be added to WordPress; however, this demonstrates exactly how your plugin should behave while you're working with it.

A new menu item will be added to the Plugins menu if you uncomment Line 71 in the class file which contains the following line:

add_action( 'admin_menu', array( $this, 'add_plugin_admin_menu' ) );


The WordPress Plugin Boilerplate is licensed under the GPL v2 or later.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

Important Notes


The WordPress Plugin Boilerplate is licensed under the GPL v2 or later; however, if you opt to use third-party code that is not compatible with v2, then you may need to switch to using code that is GPL v3 compatible.

For reference, here's a discussion that covers the Apache 2.0 License used by Bootstrap.


The assets directory provides two files that are used to represent plugin header images.

When committing your work to the WordPress Plugin Repository, these files should reside in their own assets directory, not in the root of the plugin. The initial repository will contain three directories:

  1. branches
  2. tags
  3. trunk

You'll need to add an assets directory into the root of the repository. So the final directory structure should include four directories:

  1. assets
  2. branches
  3. tags
  4. trunk

Next, copy the contents of the assets directory that are bundled with the Boilerplate into the root of the repository. This is how the WordPress Plugin Repository will retrievie the plugin header image.

Of course, you'll want to customize the header images from the place holders that are provided with the Boilerplate.

For more, in-depth information about this, read this post by Otto.

Plugin screenshots can be saved to one of two locations:

  • The traditional location is to keep them in the root of the plugin directory. This will increase the size of the download of the plugin, but make the images accessible for those who install it.
  • Alternatively, you can save the screenshots in the assets directory, as well. The repository will look here for the screenshot files as well; however, they will not be included in the plugin download thus reducing the size of the plugin.