Hybrid Core puts a service container inside your WordPress plugin or theme
Official repository for the Hybrid Core WordPress development framework.
At a glance
- What is it?
- Hybrid Core is the Theme Hybrid framework for WordPress, a PHP application layer built around a service container that plugins and themes boot through providers. Adoption is easy with Composer, but the framework's own documentation lives in a community wiki rather than in the repository.
- Who is it for?
- Hybrid Core fits developers who ship a plugin or a theme and want container managed services, a provider pattern and a single boot sequence instead of ad hoc hook wiring. It does not fit a one-off snippet, since a whole application layer is a lot of structure for a small change, and it does not fit teams who need the framework's behaviour documented inside the repository, because the documentation is a community wiki.
- Can I use it commercially?
- Yes, with conditions. GPL-2.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 62 days ago.
- What is it written in?
- Mainly PHP, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 20, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The application layer is a service container with WordPress packaging
Hybrid Core is described as a framework for developing WordPress plugins and themes, and its own description of the core package is precise: the application layer primarily consists of a service container. That phrase does most of the work in understanding the project.
The stated purpose is to simplify the complexities of WordPress development and to help you write more modern PHP code, providing functions, classes and interfaces so that you are not rebuilding the same scaffolding for each new project. The point is not a new templating system or a new hook API. It is a way to structure the code that a plugin or theme already has to write.
A service container gives you dependency resolution and a place to register implementations. The repository itself is a small PHP package: the top level holds composer.json, src/, a CHANGELOG.md, CONTRIBUTING.md, LICENSE.md and README.md, with no bundled demo site and no vendor directory. It is a library you pull into a project, not a starter kit you clone.
The core package can be used on its own or alongside the other Hybrid packages published by Theme Hybrid, which is how the framework is intended to be composed: the container as the base, with optional parts added as the project needs them.
Booting is guarded because a plugin and a theme can both call it
The framework is not started by loading a file. It starts when an instance of the Hybrid\Core\Application class is created and its boot() method is called.
The interesting constraint is that this can happen more than once, because a WordPress site may load both a plugin and a theme that each want the framework. The documented pattern is to check a function before creating anything:
// Create a new application.
$slug = \Hybrid\booted() ? \Hybrid\app() : new \Hybrid\Core\Application();
// Add service providers.
$slug->provider( \YourProject\Provider::class );
// Bootstrap the application.
$slug->boot();The ternary does two things. It asks the framework whether it is already running, and if so it reuses the existing instance through the app() helper rather than creating a second container. If nothing is running, a fresh Application is constructed. Either way the variable ends up holding the object you can call methods on.
The provider call is where your own code attaches. The README shows a class reference, \YourProject\Provider::class, being registered on the application before boot() runs. So the shape of a Hybrid Core project is: one application, one or more provider classes, one boot call. Note what the README does not do here: it does not spell out the interface a provider must implement, nor the order in which providers are resolved. That contract lives in the project wiki, which the README says is community-contributed documentation.
Composer install, then a guarded require of the autoloader
Installation is a single Composer command, and the stated requirements are PHP 8.2 or later and Composer 2.0 or later. Both are hard floors, so a host on PHP 8.1 is out regardless of how the package is bundled.
composer require themehybrid/hybrid-coreIf you bundle the framework directly inside a plugin, the README gives this include:
if ( file_exists( 'vendor/autoload.php' ) ) {
require_once 'vendor/autoload.php';
}For a theme the path is resolved through the WordPress parent theme helper, because a theme can be a child theme and the dependency may sit in the parent's vendor directory:
if ( file_exists( get_parent_theme_file_path( 'vendor/autoload.php' ) ) ) {
require_once( get_parent_theme_file_path( 'vendor/autoload.php' ) );
}Both snippets wrap the include in a file_exists check. That is deliberate defensive code rather than decoration: if the dependency was never installed, the check lets the rest of the plugin load without a fatal error on a missing file. The practical consequence is that a missing vendor directory produces a quietly broken site rather than a loud crash, so the bootstrap code that follows is where you will want a clear check of your own.
A first real use, then, is: install the package, include the autoloader in this guarded way, run the bootstrap snippet, and register a provider class. Expect to spend your next hour in the wiki, not in the code.
The framework's documentation is a community wiki, not a docs directory
This is the most consequential gap for an adopter, and it is stated plainly in the README. The documentation is handled via the Hybrid Core wiki, and the project asks you to contribute to it if you use the framework. The repository's top-level listing backs this up: there is no docs directory, no guides folder, and no site directory among the entries.
That has two sides. On the positive side, the documentation can cover the parts a release does not. On the negative side, the guarantees differ from a documentation set that ships with a version. Wiki content changes independently of a tagged release, so a page you read may describe a newer state of the framework than the version pinned in your composer.json. If you are the kind of team that treats documentation and code as one artifact, this is a real friction point, and the only mitigation is to check the wiki's history for the pages you rely on.
The repository does carry the usual meta files. CHANGELOG.md gives the release history, CONTRIBUTING.md describes how changes are proposed, LICENSE.md holds the licence text, and .editorconfig and .gitattributes sit alongside them. The README also points to a Slack community for questions, so support is community based.
For a framework, the missing part is an API reference. The README names the provider mechanism and the container, but the shape of a provider, the list of shipped services and the available interfaces are all wiki questions.
Version lines run in parallel, and the changelog is where to look
The listed releases are worth reading carefully if you are choosing what to pin.
There are three in the record: 7.0.5 dated 2026-06-03, 5.2.2 dated 2024-10-12, and 7.0.4 dated 2024-10-23. Note the order. A 5.2.2 release is dated nine days earlier than 7.0.4, which means the project keeps older version lines alive and releases to them, rather than shipping a single descending sequence of new majors. If you are on 5.x you are not on a dead branch, and if you are on 7.x you may be missing fixes that went into the 5.2.2 line.
The last push was on 2026-08-22, and the most recent listed release, 7.0.5, came on 2026-06-03. The repository is not archived, so the code is still receiving changes, and the gap between that release and the last push suggests work landing between tagged versions.
The CHANGELOG.md file is the artifact to read before upgrading, precisely because the version numbers do not tell you which line a fix landed on. Whether a 5.x consumer should move to 7.x is a compatibility question that the README does not answer, and the wiki is where that answer would have to come from.
GPL for the framework, MIT for the container code underneath
The licensing picture has two layers, and the second one is unusual enough to check before you ship.
Hybrid Core itself is licensed under the GNU GPL, version 2 or later. That is a natural fit for a WordPress framework, since plugins and themes distributed through the WordPress ecosystem are expected to carry that licence. The project is free, and the README notes that donations to the project are welcome as well.
The second layer is the third-party code. The README states that Hybrid Core utilizes code from the illuminate/* packages, pointing at the repositories under the illuminate organisation, licensed under the MIT License, copyright Taylor Otwell. So the container that the framework is built on comes from the Laravel component set under a permissive licence, while the framework assembled around it is GPL version 2 or later.
Nothing in the README suggests a conflict, and a GPL component may depend on MIT code. What it does mean is that the dependency set of your plugin now includes packages under a second licence, and that is worth recording in your own notices if you distribute the result.
For a plugin distributed through WordPress.org, the GPL expectation applies to the combined work you ship, and Hybrid Core's terms are aligned with that. For a theme used only internally, the licence question is less pressing, but the MIT components still need to be listed in your notices.
A plain plugin with a container you wire yourself is the honest alternative
The realistic alternative is not another framework but the plainer path: a WordPress plugin that does not use a framework, with a small container wired in by hand, or with the illuminate container packages used directly since Hybrid Core already builds on them.
The difference in approach is specific. Using illuminate/container directly gives you the same container semantics under the MIT licence, but nothing around it: no Hybrid\Core\Application, no provider registration, no Hybrid\booted() and Hybrid\app() helpers, and no boot sequence that your plugin and theme can share. You would be choosing the container and refusing the framework, and that only makes sense if you want nothing else.
Using no container at all is the other option, and for a plugin with a handful of hooks it is honestly the cheapest. The cost of a framework is real: a Composer dependency, a PHP 8.2 floor, an autoloader include in the plugin or theme, a provider class, and a wiki to read. For a single form handler or a shortcode, that is more structure than the problem needs.
The point where Hybrid Core starts to pay is when the same code has to be shared between a plugin and a theme, or when several services need to be resolved and swapped in tests. The boot guard and the provider list are built for exactly that case.
Editorial conclusion
Hybrid Core fits developers who ship a plugin or a theme and want container managed services, a provider pattern and a single boot sequence instead of ad hoc hook wiring. It does not fit a one-off snippet, since a whole application layer is a lot of structure for a small change, and it does not fit teams who need the framework's behaviour documented inside the repository, because the documentation is a community wiki. Verify first that your hosting runs PHP 8.2 or later, then read the provider contract in the wiki before you register your first \YourProject\Provider class, and check the version line you are pinning because releases such as 5.2.2 and 7.0.4 and 7.0.5 are listed across different branches.
Frequently asked questions
What are the requirements to install Hybrid Core?
The README lists PHP 8.2 or later and Composer 2.0 or later. The package itself is installed with composer require themehybrid/hybrid-core.
How do I bootstrap Hybrid Core in a WordPress plugin?
Check the Hybrid\booted() function first and reuse the existing instance with Hybrid\app() if one exists, otherwise create new Hybrid\Core\Application, register your provider class with the provider() method, and then call boot().
Where is the Hybrid Core documentation?
The README says documentation is handled via the Hybrid Core wiki, and it describes that wiki as community-contributed documentation. The repository itself does not contain a docs directory.
What licence does Hybrid Core use?
Hybrid Core is licensed under the GNU GPL version 2 or later. The README also states that it utilizes code from the illuminate/* packages, which are under the MIT License.
Can I use Hybrid Core without the other Hybrid packages?
Yes. The README states that the core package is the application layer, which primarily consists of a service container, and that it can be used alone or alongside any of the available Hybrid packages.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/themehybrid-hybrid-core)Was this useful?