joanrodas / plubo-routes
WordPress routes made simple.
Fund package maintenance!
Ko Fi
Installs: 2 404
Dependents: 0
Suggesters: 0
Security: 0
Stars: 13
Watchers: 3
Forks: 0
Open Issues: 2
Requires
- php: >=7.4
- justinrainbow/json-schema: ^6.0
This package is auto-updated.
Last update: 2025-03-10 08:04:28 UTC
README
WordPress routes made simple.
✔️ No need to write rewrite rules and tags manually
✔️ Automatically flush rewrite rules when the routes change
✔️ Custom redirects and action routes
✔️ Easily extendable with hooks
✔️ Easy to use with Sage 10
Getting started
composer require joanrodas/plubo-routes
You can also install Plubo Routes as a standalone WordPress plugin, simply downloading the zip and placing it in the plugins folder.
Adding new routes
There are different types of routes:
How to add a new route
You can add new routes using the following filter:
PluboRoutes\RoutesProcessor::init(); add_filter( 'plubo/routes', array($this, 'add_routes') ); public function add_routes( $routes ) { //Your routes return $routes; }
Basic routes
Basic routes take 3 parameters:
Parameter | Type |
---|---|
Route Path | String |
Template file name | String | Callable |
Config | Array (optional) |
Examples:
use PluboRoutes\Route\Route; add_filter( 'plubo/routes', array($this, 'add_routes') ); public function add_routes( $routes ) { $routes[] = new Route('clients/list', 'template_name'); //SAGE 10 example $routes[] = new Route( 'dashboard/{subpage:slug}', function($matches) { $subpage = 'dashboard/' . $matches['subpage']; return locate_template( app('sage.finder')->locate($subpage) ); }, [ 'name' => 'my-route' ] ); return $routes; }
Available syntax
You can use the format {variable_name:type} with any of the available types:
- number (numbers only)
- word (a-Z only)
- slug (a valid WordPress slug)
- date (yyyy-mm-dd date)
- year (4 digits)
- month (01-12)
- day (01-31)
- digit (single digit 0-9)
- jwt (JWT token)
- ip (IPv4)
You can also use custom regex patterns using the format {variable_name:regex_pattern} like {author:([a-z0-9-]+)}
Changing general template path
By default, Plubo Routes will search the template inside your theme, but you can use a hook to chenge the default path.
If you use Sage 10, you could add something like this:
add_filter( 'plubo/template', function($template) { return app('sage.finder')->locate($template); });
Custom Actions
Named routes provide a hook to execute your custom actions:
add_action('plubo/route_{route_name}', function($matches) { //Do something });
Contributions
Feel free to contribute to the project, suggesting improvements, reporting bugs and coding.