Skip to content

Create custom WordPress routes and redirects, restrict access by roles and/or capabilities. Routes made simple

License

Notifications You must be signed in to change notification settings

joanrodas/plubo-routes

Plubo Routes

GitHub stars Code Climate maintainability

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.


Read the Docs


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

contributions welcome GitHub issues GitHub license

Feel free to contribute to the project, suggesting improvements, reporting bugs and coding.

About

Create custom WordPress routes and redirects, restrict access by roles and/or capabilities. Routes made simple

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Languages