WordPress rewriting rules

Posts in WordPress do have excellent support for rewriting rules and for saving the old slugs automatically.

We wrote about that before here.

The problem is to have pages and other custom post types to have easy system for rewriting rules independent from the posts. Also the problem is to have old slugs saved for custom post types and for pages.

Here are few tips to work with pages and how to create rewriting rules. Luckily, we have $wp_rewrite global register page_structure that we can update. After flushing the rewrite rules we can get the new posts rewrite rules.

$wp_rewrite->page_structure = $wp_rewrite->page_structure . '.html';

Please note, the rewrite rules have rule - the most important rule will prevail. There may be 20 rules that may affect our URL but only the most important rule will be considered. For the custom post types “Custom Post Type Permalinks” plugin provides perfect date to start with modifying custom post types permalinks.

The idea is to create extra_permastruct array inside $wp_rewrite that will store extra permalink data for all custom post types and other taxonomies. For instance for the videos custom post type we may have this:

[extra_permastructs] => Array
(
[videos] => Array
(
[with_front] =>
[ep_mask] => 8191
[paged] => 1
[feed] => 1
[forcomments] => 1
[walk_dirs] => 1
[endpoints] => 1
[struct] => /videos/%videos%.html/
)
[videotags] => Array
(
[with_front] => 1
[ep_mask] => 0
[paged] => 1
[feed] => 1
[forcomments] =>
[walk_dirs] => 1
[endpoints] => 1
[struct] => /videotags/%videotags%
)
)

tags: & category: -