WordPress Plugin Boilerplate Overview

All our plugins (with the exception of a few simple utility plugins) are based on the WordPress Plugin Boilerplate plugin structure.

Introduction

The WordPress Plugin Boilerplate (WPPB) is a standardized, organized, object-oriented foundation for building high-quality WordPress plugins. Journal Events uses this structure as its foundation.

Core Structure

plugin-name/
├── admin/                     # Admin-specific functionality
│   ├── class-plugin-name-admin.php
│   ├── css/
│   ├── js/
│   ├── images/               
│   └── partials/             # Admin-facing views
│
├── includes/                  # Core plugin functionality
│   ├── class-plugin-name.php             # Main plugin class
│   ├── class-plugin-name-loader.php      # Action/filter loader
│   ├── class-plugin-name-i18n.php        # Internationalization
│   ├── class-plugin-name-activator.php   # Activation handler
│   └── class-plugin-name-deactivator.php # Deactivation handler
│
├── languages/                # Internationalization files
│   └── plugin-name.pot
│
├── public/                   # Public-facing functionality
│   ├── class-plugin-name-public.php
│   ├── css/
│   ├── js/
│   └── partials/            # Public-facing views
│
└── plugin-name.php          # Main plugin file

Key Components

1. Main Plugin File (plugin-name.php)

  • Contains plugin metadata (header comment)
  • Defines plugin constants
  • Includes the core plugin class
  • Registers activation/deactivation hooks
  • Begins plugin execution

2. Core Classes

Main Plugin Class (includes/class-plugin-name.php)

  • Maintains plugin name and version
  • Loads dependencies
  • Sets up internationalization
  • Defines admin and public hooks
  • Coordinates plugin functionality

Loader Class (includes/class-plugin-name-loader.php)

  • Maintains arrays of actions and filters
  • Adds hooks to WordPress
  • Executes all registered hooks

i18n Class (includes/class-plugin-name-i18n.php)

  • Sets up text domain for internationalization
  • Loads translation files

3. Admin & Public Classes

Admin Class (admin/class-plugin-name-admin.php)

  • Enqueues admin-specific scripts and styles
  • Manages admin menu items
  • Handles admin-side functionality
  • Renders admin views

Public Class (public/class-plugin-name-public.php)

  • Enqueues public-facing scripts and styles
  • Manages shortcodes
  • Handles front-end functionality
  • Renders public views

Best Practices

1. Naming Conventions

  • Classes: Capitalized with underscores (Plugin_Name)
  • Files: Lowercase with hyphens (plugin-name)
  • Prefixes: All functions and classes prefixed (plugin_name_function)

2. Code Organization

  • Separation of concerns (admin/public/includes)
  • Clear file structure
  • Consistent naming patterns
  • Well-documented code

3. WordPress Integration

  • Uses WordPress coding standards
  • Proper hook usage
  • Security best practices
  • Internationalization support

4. Object-Oriented Principles

  • Encapsulation
  • Single Responsibility
  • DRY (Don’t Repeat Yourself)
  • Modularity

Using WPPB

1. Getting Started

  1. Download or clone the boilerplate
  2. Replace plugin-name references
  3. Update namespace and prefixes
  4. Add plugin-specific functionality

2. Common Modifications

  • Adding custom post types
  • Creating admin pages
  • Adding shortcodes
  • Creating widgets
  • Adding REST API endpoints

3. Extension Points

  • Actions and filters
  • Class inheritance
  • Interface implementation
  • Dependency injection

Benefits

1. Standardization

  • Consistent code structure
  • Familiar organization
  • Easy to maintain
  • Professional quality

2. Time Saving

  • Pre-built architecture
  • Common patterns included
  • Basic functionality ready
  • Quick start development

3. Best Practices

  • Security considerations
  • WordPress standards
  • Modern PHP practices
  • Scalable structure

Resources