#17325 closed defect (bug) (worksforme)
No good way to flush rules on registering post types
| Reported by: |
|
Owned by: | |
|---|---|---|---|
| Milestone: | Priority: | normal | |
| Severity: | normal | Version: | 3.1 |
| Component: | Permalinks | Keywords: | |
| Focuses: | Cc: |
Description
Plugins that register post types can't flush_rewrite_rules() on activation.
flush_rewrite_rules is too early (for post types registered at init) at do_action( 'activate_' . $plugin, $network_wide ); and adding a delayed action on init fails because shortly after activate_plugin() there's a wp_redirect() at http://core.trac.wordpress.org/browser/trunk/wp-admin/plugins.php#L61 (which sets a new code execution) before the init hook runs.
What's left is manually visiting options-permalinks.php, setting an option and checking to do the flush, or flushing every page load, as is being recommended on many blogs.
Change History (2)
Note: See
TracTickets for help on using
tickets.
Here's how I do it:
function my_cpt_init() { register_post_type( ... ); } add_action('init', 'my_cpt_init'); function my_rewrite_flush() { my_cpt_init(); flush_rewrite_rules(); } register_activation_hook(__FILE__, 'my_rewrite_flush');