Yet another URL rewrite issue :)
The Problem
I have a URL rewrite rule that should work, but against all logic it redirects without passing the query var.
The Juicy Details
The site has a page structure set up like so:
/our-firm/shareholders
and I have a Custom Post Type named "shareholder." My goal is to have the structure work like this:
/our-firm/shareholders/awesome-shareholder-name
...and for the Shareholders page to do a custom query for the Shareholder posts. I normally would use the rewrite slug for the Shareholder posts, but I want the content to be shown in the context of the original Page structure (our-firm/shareholders).
In order to achieve that, I added this code in functions.php (and have since gone to Permalinks and saved to refresh the rules):
add_action( 'init', 'my_custom_rewrites' );
function my_custom_rewrites(){
add_rewrite_rule(
'our-firm/shareholders/([^/]+)/?',
'index.php?pagename=shareholders&shareholder_name=$matches[1]',
'top' );
}
add_filter( 'query_vars', 'my_custom_query_vars' );
function my_custom_query_vars( $query_vars ){
$query_vars[] = 'shareholder_name';
return $query_vars;
}
All that in place, if I go to /our-firm/shareholders/awesome-shareholder-name it redirects me to the Shareholders page without passing the query var and actually changes the URL to /our-firm/shareholders/. The weird part is if I change the redirect pagename to anything else, it works and effortlessly passes the query var along.
To further test it, I used the handy Rewrite Analyzer plugin and got this:
Rewrite Analyzer Test Screenshot
Additional Notes
I am running WP 3.2.1, testing locally, and have not fiddled with .htaccess
My Shareholders Page template isn't doing anything unusual, but let me know if you need to see it
Does Wordpress take into account the label of a Custom Post Type when figuring out URLs? The plural label of "shareholder" is, naturally, "Shareholders."
I am adding the "shareholder" CPT via the Custom Post Type UI plugin. I can manually add it with code if anyone feels that would help. These are the CPT settings:
rewrite = true, slug = 'shareholder', with_front = true, query var = true, and hierarchical = true.
I previously had the "shareholder" post type ID as "shareholders," then quickly realized that would cause issues being the same name as the page I was attempting to redirect to. I then changed the post type to "shareholder," which unfortunately didn't resolve the issue. Could the fact that there one was a post type of "shareholders" be affecting this? Maybe there's a secret magical cache somewhere that I could clear out...
I know there are at least 5 bajillion WP URL rewrite posts across the web, but I can't seem to find one that pertains to my specific issue. Sorry if I missed one :)
I'm at my wit's end – I know that this should work, but it doesn't. Hopefully I missed something painfully obvious and it's an easy fix. Please let me know if I can provide any more details/code/etc.
Any help would be appreciated, thanks!