What is the proper way to use add_rewrite_rule to remove the (question mark)?

I have a page called “People” with a custom template that takes in a variable called name:

example.com/people/?name=FirstLast

Read More

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!

Related posts

Leave a Reply

2 comments

  1. try

    add_action( 'init', 'addMyRules' );
    function addMyRules(){
        add_rewrite_rule('^people/([^/]*)/?','index.php?name=$matches[1]','top');
        add_rewrite_tag('%name%','([^&]+)');
    }
    
  2. You should call add_rewrite_rule in the action hook as follows:

    add_action('init', 'wpa8715_intit');
    
    function wpa8715_intit() {
        add_rewrite_rule('^people/([^/]*)/?','index.php?name=$matches[1]','top');
        add_rewrite_tag('%name%','([^&]+)');
    }