I have following rewrite rule implemented in the website
add_rewrite_tag('%c%', '([^&] )');
add_rewrite_rule('^blog/([a-z0-9-] )[/]?', 'index.php?pagename=blog&c=$matches[1]', 'top');
It works when I have the exact match, for example
https://example.com/blog/category
But when URL contains any query parameter it does not match
https://example.com/blog/category?utm_campaign=web
I want to match and retain any query parameter from the URL if exist, how do I go about it?
Thanks
CodePudding user response:
We need to define the query parameter key by using add_rewrite_tag(...)
; probably because of this, we cannot declare an unknown number of query parameters. If someone has another solution, I would be happy to learn it. The following code is for only the "utm_campaign" parameter.
add_rewrite_tag('%c%', '([^&] )');
add_rewrite_tag('%utm_campaign%', '([^&] )');
add_rewrite_rule('^blog/([a-z0-9-] )[/]?(?:[?].*utm_campaign=([^&\s] ))?', 'index.php?pagename=blog&c=$matches[1]&utm_campaign=$matches[2]', 'top');