Rewrite rule taxonomy url with different values in one function

You can do that using a subpattern or capturing group like ([a-z]) in your rewrite rule’s regex (i.e. regular expression pattern, which is the 1st parameter for add_rewrite_rule()), and then use $matches[<n>] in your query (the 2nd parameter for add_rewrite_rule()), where <n> is a number (1 or above) and it’s the subpattern’s position number.

  • Why use $matches: Because when matching the current URL against the rewrite rules on your site (i.e. rules which use index.php), WordPress will use preg_match() with the 3rd parameter set to $matches.

So for example in your case, you can try this which should match movies/a, movies/b, movies/c and so on, and that the $matches[1] would be the alphabet after the slash (e.g. c as in movies/c):



  • I added $ to the regex, so that it only matches movies/<alphabet> like movies/a and not just anything that starts with that alphabet or path (e.g. movies/aquaman and movies/ant-man).

  • See this for more details on regex meta-characters like that $.

  • You can play with the above regex here. ( PS: You can learn regex via this site; just check the explanation for the specific regex pattern.. 🙂 )

Don’t forget to flush the rewrite rules — just visit the Permalink Settings admin page, without having to do anything else.

Bonus 😉

To support for pagination, e.g. the 2nd page at, you can use the following regex and query:

Note that we now have 2 capturing groups — ([a-z]) and (\d+) (the page number). $matches[2] is used to get the page number and will be the value of the query var named paged.


You can test the regex here, and once again, remember to flush the rewrite rules after making changes to your regex and/or query.

Happy coding!