[wp-hackers] Need Custom Post Type Rewrite Help, Please
Mike Schinkel
mikeschinkel at newclarity.net
Sun Apr 18 17:37:22 UTC 2010
On Apr 18, 2010, at 6:49 AM, scribu wrote:
> On Sun, Apr 18, 2010 at 1:37 PM, Mike Schinkel
> <mikeschinkel at newclarity.net>wrote:
>
>> $pages = get_pages();
>> foreach ( $pages as $page )
>>
>> $wp_rewrite->add_rule("$page->post_name/?","index.php?post_type=page&p={$page->ID}",'top');
>>
>> Only problem is, in either case, now it calls single_template instead of
>> page_template. Go figure.
>>
>
>
> You should use *?page_id=* instead of *post_type=page&p=*
Awesome, that did it. Thanks!
But unfortunately it's still not 100% complete. This is the code that works thus far:
global $wp,$wp_rewrite;
$wp->add_query_var('financial-term');
$wp_rewrite->add_rewrite_tag('%financial-term%', '([^/]+)','financial-term=');
$wp_rewrite->add_permastruct('financial-term', '%financial-term%');
$pages = get_pages();
foreach ( $pages as $page ) {
$wp_rewrite->add_rule("$page->post_name/?","index.php?page_id={$page->ID}",'top');
}
$wp_rewrite->flush_rules(false);
Unfortunately I'm finding that get_permalink() returns 'example.com/financial-term/term-name/' (which generates a 404) instead of 'example.com/term-name/' which serves as I want it to. I can of course hook 'post_link' and manipulate the link but it's like I shouldn't have to do it that way and thus am doing something wrong.
OTOH, looking just now at the definition of register_post_type() it seems to give no other option than something like '%post_type%/post-name'. Any ideas, or is this just where a new filter is needed?
-Mike
More information about the wp-hackers
mailing list