Plugin Development
Everything you need to build, test, and publish a Contensio plugin — from first file to first release.
Plugin overview
What a Contensio plugin is, how it's discovered, and the two install paths users can take.
Plugin anatomy
The file layout every Contensio plugin follows, the namespace convention, and what each file does.
plugin.json reference
Every field in the plugin manifest, with examples.
The service provider
Your plugin's entry point - the $ns property, registering routes, views, migrations, hooks, and lifecycle callbacks.
Hook system
Actions, Filters, and UI render hooks - extend Contensio from your plugin without touching core files.
Contensio hooks vs WordPress hooks
A side-by-side comparison for WordPress developers — same mental model, same function names, with a few deliberate improvements.
Sidebar navigation
Place your plugin's admin links in the sidebar — Root, Tools, or Appearance, with one or many entries.
Routes and views
Register routes and Blade views under your plugin's namespace without clashing with core or other plugins.
Migrations
Ship database tables with your plugin. They run automatically when a user enables it.
Data storage
Four storage mechanisms for plugin data - choosing the right one avoids unnecessary migrations and keeps your plugin lean.
Publishing to Packagist
Make your plugin installable via Composer, discoverable on Packagist, and releasable on GitHub.
FAQ
Common questions about building plugins — answered.
Troubleshooting
Common plugin development issues and how to fix them.