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
- Download or clone the boilerplate
- Replace plugin-name references
- Update namespace and prefixes
- 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