A simple router for WordPress plugins and themes

6.0.0 2022-02-03 19:14 UTC

This package is not auto-updated.

Last update: 2023-02-04 08:57:52 UTC


A simple scoped router powered by query string parameters.

Though this has use outside of WordPress (for now), it is meant for use within the WordPress ecosystem as a means to add custom routes without specific page scripts.


The router matches a get or post request to a responder. A responder is a function or an invokable class.

use DownShift\WordPress\Router;

$router = new Router('my_scope');

// matches ?my_scope=/myroute
$router->post('/myroute', function () {
  // do something here

// listen terminates via exit after route function executes

You can also give a route definition an invokable class.

$router->post('/myroute', new InvokableClass());

// or a string if you prefer
$router->post('/myroute', 'DownShift\Responders\SomeClass');

service injection

Services in route functions are resolved using a PHP 5.3 friendly version of the Illuminate Container

$container = new Container();
$container->bind('SomeInterface', 'SomeImplementation');
$router = new Router('my_scope');

$router->get('/test', function (SomeInterface $service) {
  // do a thing with $service

If resolving a class, the constructor will have dependencies injected. Resolution of classes is only valid when using a string.


Tests are written using peridot, and can be run like so: