Router

This component implements callbacks and methods for managing URLs and redirects. In HivePress, each URL is registered as a route with an array of parameters. This makes URLs customizable and accessible via the Router methods.

To get the current route name, call the get_current_route_name method:

$route = hivepress()->router->get_current_route_name();

You can also customize any URL route via the hivepress/v1/routes filter hook. Remember to refresh permalinks in Settings > Permalinks after making any URL changes.

Quick example

The code example below redirects non-registered users from the listing page to the login page. After the user is logged in or registered, there's a redirect back to the initial listing page.

add_action(
	'template_redirect',
	function() {
		if ( ! is_user_logged_in() && hivepress()->router->get_current_route_name() === 'listing_view_page' ) {
			wp_safe_redirect( hivepress()->router->get_return_url( 'user_login_page' ) );

			exit;
		}
	}
);

Getting URLs

To get the current URL, call the get_current_url method:

$url = hivepress()->router->get_current_url();

For getting a URL by the route name, use the get_url method:

$url = hivepress()->router->get_url( 'my_custom_route' );

Some routes require extra URL parameters. The code example below gets a listing URL by ID:

$url = hivepress()->router->get_url( 'listing_view_page', [ 'listing_id' => 123 ] );

To get a URL that redirects users back after some action (e.g. logging in), use the get_return_url method:

$url = hivepress()->router->get_return_url( 'my_custom_route' );

If you need to get the redirect URL from the current URL query parameters, call the get_redirect_url method:

$url = hivepress()->router->get_redirect_url();

Last updated