I have a page called "People" with a custom template that takes in a variable called name:
example.com/people/?name=FirstLast
What I want is this:
example.com/people/FristLast
I know I need to use the add_rewrite_rule and add_rewrite_tag calls but I'm not sure how to achieve my desired result. I've tried this but I get a php error:
add_rewrite_rule('^people/([^/]*)/?','index.php?name=$matches[1]','top');
add_rewrite_tag('%name%','([^&]+)');
The error I get is: "Fatal error: Call to a member function add_rule() on a non-object"
I think I'm on the right path. I'm very knowledgeable with WP but this is my first attempt to the rewrite rule.
Thanks!
----- EDIT ----- I've updated the code. I no longer get an error but nothing "happens"
function rewrite_rule_people() {
global $wp_rewrite;
add_rewrite_tag('%name%','([^/]*)');
add_rewrite_rule('^people/([^/]*)','index.php?page_id=42602&name=$matches[1]','top');
$wp_rewrite->flush_rules();
}
add_action( 'init', 'rewrite_rule_people' );
going to /people/?name=JohnSmith doesn't change the url to /people/JohnSmith
$wp_rewrite->flush_rules()
as it's pretty hefty, programmatically speaking. You can achieve the same effect by going to Settings->Permalinks in the admin screens and saving your Permalink settings. See codex.wordpress.org/Rewrite_API/flush_rules