#17325 closed defect (bug) (worksforme)
No good way to flush rules on registering post types
| Reported by: | WraithKenny | Owned by: | |
|---|---|---|---|
| Priority: | normal | Milestone: | |
| Component: | Permalinks | Version: | 3.1 |
| Severity: | normal | Keywords: | |
| Cc: | Focuses: |
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.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)
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');