- Added /collections/ route with user_collection filtering - Fixed topics filtering by correcting field names (topic, not topic_name) - Fixed collections access control for public collections - Fixed collection detail view issue retrieval (added_date field) - Added collection ID to permalinks for unique identification - Added Spanish translations for global search - Added topics count to user collection stats |
||
|---|---|---|
| assets | ||
| controllers | ||
| database/migrations | ||
| docs | ||
| includes | ||
| languages | ||
| models | ||
| services | ||
| tests | ||
| views | ||
| .gitignore | ||
| ARCHITECTURE.md | ||
| CHANGELOG.md | ||
| composer.json | ||
| composer.phar | ||
| LICENSE | ||
| magazines-collection.php | ||
| phpunit.xml | ||
| README.md | ||
| ROADMAP.md | ||
| STRUCTURE.md | ||
| TODO.md | ||
| update-info.json | ||
Magazines Collection
A comprehensive WordPress plugin to manage and maintain your own magazines collection and periodical publications.
Description
Magazines Collection is a complete management system for cataloging magazines, issues, articles, and authors. The plugin provides both an administrative interface for content management and a public-facing interface for readers.
Features
Core Functionality
-
Complete Magazine Management
- Catalog magazines with detailed information (name, description, ISSN)
- Configure editors, languages, periodicity, and topics
- Organize magazines by multiple topics (many-to-many relationship)
-
Issue Management
- Track individual issues with volume and number
- Upload cover images for each issue
- Manage publication dates
- Link issues to their parent magazines
-
Article Management
- Catalog articles within issues
- Full article information: title, abstract, pages
- Associate articles with authors
- Tag articles with multiple labels (many-to-many relationship)
-
Author Management
- Maintain author profiles
- Full biography support with rich text editor (TinyMCE)
- Track all publications by author
User Roles & Permissions
The plugin implements three user roles with different capabilities:
-
Administrator
- Full access to all features
- Can create, edit, and delete all content
- Access to settings and configuration
- Capabilities:
read_magazines,edit_magazines,delete_magazines
-
Author (Editor)
- Can view and edit content
- Cannot delete content
- No access to settings
- Capabilities:
read_magazines,edit_magazines
-
Subscriber (Viewer)
- Read-only access through public interface
- Cannot edit or create content
- Clean, modern reading interface
- Capabilities:
read_magazines
Admin Interface (Administrators & Authors)
- Full MVC architecture with separation of concerns
- WordPress-native admin interface
- CRUD operations for all entities
- Form validation and error handling
- Success/error messages with transients
- Inline forms for many-to-many relationships
- AJAX-powered dynamic form elements
- WordPress media library integration
- Search and filter capabilities
- Pagination for large datasets
Public Interface (Viewers)
- Modern, clean reading interface
- Responsive design with CSS Grid
- Navigation between related content:
- Magazines → Issues → Articles → Authors
- Real-time search functionality
- Cover image display for issues
- Full article abstracts and keywords
- Author biographies and publications list
- User info and logout functionality
Technical Features
-
MVC Architecture
- Models: Data access layer with CRUD operations
- Views: Separate admin and public templates
- Controllers: Request handling and business logic
-
Database Structure
- 9 custom tables with proper relationships
- Foreign key constraints
- CASCADE and SET NULL operations
- Optimized indexes
-
Internationalization
- Ready for translation
- Text domain:
magazines-collection - Included languages: English (default), Spanish, Catalan
- Compiled .mo files included
-
Security
- WordPress nonces for form submissions
- Capability checks on all operations
- Input sanitization and validation
- SQL injection prevention with prepared statements
- XSS protection with output escaping
-
WordPress Integration
- Follows WordPress coding standards
- PHPDoc documentation throughout
- Uses WordPress APIs (wpdb, transients, media library)
- Proper activation/deactivation hooks
- Clean uninstall with data removal
Installation
- Upload the
magazines-collectionfolder to/wp-content/plugins/ - Activate the plugin through the 'Plugins' menu in WordPress
- The plugin will automatically create the necessary database tables
- Access the plugin through the 'Magazines' menu in the admin sidebar
Usage
For Administrators
-
Navigate to Magazines > Settings to configure:
- Editors
- Periodicity options
- Languages
- Topics
- Article labels
-
Navigate to Magazines > Authors to add authors with biographies
-
Create magazines with all required information
-
Add issues to magazines with cover images
-
Create articles within issues, associating them with authors and labels
For Authors/Editors
- Access the Magazines menu
- Create and edit magazines, issues, articles, and authors
- Cannot access settings or delete content
For Viewers/Subscribers
- Access the Magazines menu
- Automatically redirected to public reading interface
- Browse magazines, issues, articles, and authors
- Use search to find specific content
- Navigate between related content
Views Architecture
The plugin implements a clear separation between administrative and public-facing views:
views/
├── admin/ # Backend/administrative views
│ ├── articles/
│ ├── magazines/
│ ├── issues/
│ ├── authors/
│ ├── editors/
│ ├── topics/
│ ├── labels/
│ ├── languages/
│ ├── periodicity/
│ ├── collections/
│ ├── dashboard/
│ └── components/
└── public/ # Frontend/public-facing views
├── articles/
├── magazines/
├── issues/
├── authors/
├── editors/
├── topics/
├── labels/
├── languages/
├── periodicities/
├── countries/
├── collections/
└── components/
Admin Views Structure
Administrative views follow a consistent CRUD pattern:
- index.php: List/table view with all entities
- create.php: Form to create a new entity
- edit.php: Form to edit an existing entity
- view.php: Read-only detailed view of an entity
Loaded via controllers:
include MAGAZINES_COLLECTION_PATH . 'views/admin/articles/create.php';
Public Views Structure
Public-facing views use a simpler pattern:
- index.php: List/archive view for browsing
- detail.php: Single entity detail view
Loaded via Template Loader:
'magazines' => 'magazines/index.php',
'magazine' => 'magazines/detail.php',
Components
Reusable components are organized separately:
- admin/components/: Admin-specific shared components (pagination, data tables, headers)
- public/components/: Public-facing shared components (templates, navigation, grids)
This architecture ensures:
- Clear separation of concerns
- Better code organization
- Easier maintenance and scaling
- Consistent patterns throughout the plugin
- Clean security boundaries
Database Schema
The plugin creates 9 tables:
wp_mc_editors- Magazine publishers/editorswp_mc_periodicity- Publication frequencywp_mc_language- Publication languageswp_mc_topics- Magazine topics/categorieswp_mc_labels- Article keywords/tagswp_mc_magazines- Main magazine catalogwp_mc_magazine_topics- Many-to-many: magazines ↔ topicswp_mc_authors- Article authorswp_mc_issues- Magazine issueswp_mc_articles- Individual articleswp_mc_article_labels- Many-to-many: articles ↔ labels
Requirements
- WordPress 5.0 or higher
- PHP 7.0 or higher
- MySQL 5.6 or higher
Changelog
See CHANGELOG.md for detailed version history.
License
This plugin is licensed under the GPL v2 or later.
Author
Created with ❤️ for magazine collectors and publishers.
Support
For support, please open an issue in the repository.