Wordpress - How to create custom URL routes?
Add this to your theme's functions.php, or put it in a plugin.
add_action( 'init', 'wpse26388_rewrites_init' );
function wpse26388_rewrites_init(){
add_rewrite_rule(
'properties/([0-9]+)/?$',
'index.php?pagename=properties&property_id=$matches[1]',
'top' );
}
add_filter( 'query_vars', 'wpse26388_query_vars' );
function wpse26388_query_vars( $query_vars ){
$query_vars[] = 'property_id';
return $query_vars;
}
This adds a rewrite rule which directs requests to /properties/
with any combination of numbers following to pagename properties
, with the query var property_id
set. Just be sure to visit your permalinks settings page and save to flush rewrite rules, so this new rule will be included.
In your page-properties.php
template, get_query_var('property_id')
will return the property id if it was set, if it's not then show the default properties page.
Another way to do it:
add_action('init', function() {
add_rewrite_rule( '^properties/([0-9]+)/?',
'index.php?pagename=properties&property_id=$matches[1]',
'top' );
}, 10, 0);
add_action('init', function() {
add_rewrite_tag( '%property_id%', '([^&]+)' );
}, 10, 0);
Codex Rewrite API/add rewrite rule
Codex Rewrite API/add rewrite tag