Plugin Structure

Overview of the plugin’s directory structure and organization.

The Journal Events plugin extends WPPB with:

Additional Directories

journal-events/
├── blocks/          # Custom Gutenberg blocks
├── datastores/      # WooCommerce data stores
├── models/          # Data models
└── docs/            # Documentation

Custom Features

  • WooCommerce integration
  • Block editor support
  • Custom post types
  • REST API endpoints

Enhanced Organization

  • Modular block structure for reusable components
  • Separate data stores for efficient data management
  • Documentation files for maintainability
  • Clear separation of concerns between components

Directory Layout

journal-events/
├── admin/                     # Admin-specific functionality
│   ├── class-journal-events-admin.php
│   ├── css/
│   └── js/                   # Admin JavaScript files
│       ├── journal-event-sidebar.js
│       ├── journal-entry-form-sidebar.js
│       ├── journal-event-profile-sidebar.js
│       ├── journal-lodging-sidebar.js
│       └── journal-players-room-sidebar.js
│
├── blocks/                    # Custom Gutenberg blocks
│   ├── admin-event-attendees.php
│   ├── admin-overview.php
│   ├── css/
│   └── js/
│       ├── admin-event-attendees.js
│       ├── admin-event-attendees-front.js
│       ├── admin-overview.js
│       └── admin-overview-front.js
│
├── datastores/               # Data persistence layer
│   ├── attendee-datastore.php
│   ├── entry-datastore.php
│   ├── profile-datastore.php
│   └── stay-play-datastore.php
│
├── includes/                # Core plugin files
│   ├── class-journal-events.php
│   ├── class-journal-events-activator.php
│   ├── class-journal-events-deactivator.php
│   ├── class-journal-events-i18n.php
│   └── class-journal-events-loader.php
│
├── models/                  # Data models
│   ├── attendee.php
│   ├── entry.php
│   ├── profile.php
│   └── stay-play.php
│
├── public/                  # Public-facing functionality
│   ├── class-journal-events-public.php
│   ├── css/
│   ├── js/
│   │   ├── form-handler.js
│   │   └── profile-form-handler.js
│   └── views/
│       ├── form-entry.php
│       └── form-event-profile.php
│
├── languages/              # Internationalization
├── journal-events.php      # Main plugin file
└── README.md              # Documentation

Directory Purposes

Each directory serves a specific purpose:

  • admin/: Contains all administrative interfaces and functionality
  • blocks/: Custom Gutenberg blocks for admin dashboards
  • datastores/: Database interaction layer following WooCommerce patterns
  • includes/: Core plugin initialization and setup
  • models/: Data models representing business objects
  • public/: Public-facing forms and functionality

The plugin follows WordPress coding standards and uses WooCommerce’s data store pattern for database operations.