Holding company · Béthune, northern France

Pollora

A framework that runs WordPress inside Laravel. Open source, MIT licensed, born out of the daily practice of an agency that has been shipping WordPress since 2018.

What it changes

Declaring a custom post type in WordPress takes a call to register_post_type(), an array of labels, and an add_action('init') to hook it up. Some thirty lines that say nothing more than “this is a book”.

app/Cms/Book.php
use Pollora\Attributes\PostType;
use Pollora\Attributes\HasArchive;
use Pollora\Attributes\Supports;
use Pollora\Attributes\ShowInRest;

#[PostType('book')]
#[HasArchive]
#[Supports(['title', 'editor', 'thumbnail'])]
#[ShowInRest]
class Book {}

The class does not need registering: it gets discovered. The labels are derived from the name. What is left on screen is what the developer meant to say — the rest is noise the framework absorbs.

Routing follows the same logic. Laravel routes take over where they exist; the WordPress template hierarchy handles everything else.

routes/web.php
Route::wp('single', [PostController::class, 'show']);
Route::wp('page', 'contact', [ContactController::class, 'index']);

Who it is for

If you work with Bedrock, Sage or Radicle, you are already at home. Roots showed the way: Composer instead of FTP, Blade instead of template files, per-environment configuration, a real asset pipeline. That ground is settled, and Pollora does not reopen it.

The difference is one of direction. Acorn — at the heart of Radicle — brings Laravel components into WordPress: the container, Blade, configuration, Eloquent, routes for virtual pages. Pollora takes the problem the other way round: the application is a full Laravel 13, with its service providers, dependency injection, routing and modules — and WordPress runs inside it.

This is not a complaint aimed at Roots: without Bedrock and Sage, this audience would not exist. It is the step after, for those who ended up wanting Laravel whole.

Why Laravel

First because it is a pleasure to write. The argument sounds slight; it is not. A developer who enjoys the work writes better, documents more and stays longer. Laravel’s API was designed to be read, and you feel it within the first hour.

Then because nothing needs reinventing. Eloquent, queues, cache, events, Artisan commands, migrations, Pest — it all exists, documented, tested and maintained by others. An in-house foundation would have taken years to reach a tenth of it, and then it would have needed maintaining.

Then because the skills are on the market. Hiring someone who knows Laravel is straightforward; hiring someone who knows an internal framework is not. For an agency, choosing a foundation is as much a recruitment decision as an architectural one.

Finally because the two tools do not tread on each other. WordPress’s backward compatibility is its greatest strength: twenty years of sites still running. It is also what stops it adopting modern PHP without breaking half the web. Laravel has no such constraint. Layering the two leaves each on its own ground — WordPress holds the content and the editors, Laravel holds the application.

What is in the box

PHP 8 attributes
Hooks, post types, taxonomies, schedules and REST routes declared on the class
Auto-discovery
Components are scanned and registered without a line of declaration
Hybrid routing
Laravel routes take priority; the WordPress template hierarchy handles the rest
Blade themes
PSR-4 autoloading, parent and child themes, Vite asset pipeline
Authentication
Laravel’s guard and password hashing wired into WordPress
Events
WordPress, WooCommerce, Gravity Forms and Yoast dispatched through Laravel
Modules
Application split via nwidart/laravel-modules
Installation
composer create-project pollora/pollora my-project

Where it comes from

Pollora did not come out of a laboratory. The problems it solves are the ones you hit while shipping sites: a register_post_type() copied for the hundredth time, hooks scattered through functions.php, a theme you cannot test. It is the work of a team that does WordPress every day at AmphiBee, made public under the MIT licence.

Twenty-five public repositories, test coverage held at 100 %, PHPStan, Pint and Rector in the pipeline. The main package has 3,771 downloads on Packagist — figure read when this page was built.

PHP 8.3Laravel 13WordPress 7.0+MIT