Languages: English • rewrite rules 日本語 (Add your language)
Remove rewrite rules and then recreate rewrite rules.
This function is useful when used with custom post types as it allows for automatic flushing of the WordPress rewrite rules (usually needs to be done manually for new custom post types). However, this is an expensive operation so it should only be used when absolutely necessary. See Usage section for more details.
Important:
<?php flush_rewrite_rules( $hard ); ?>
This is how you would flush rewrite rules when a plugin is activated or deactivated:
register_deactivation_hook( __FILE__, 'flush_rewrite_rules' ); register_activation_hook( __FILE__, 'myplugin_flush_rewrites' ); function myplugin_flush_rewrites() { // call your CPT registration function here (it should also be hooked into 'init') myplugin_custom_post_types_registration(); flush_rewrite_rules(); }
This is how you would flush rules on theme activation:
/* Flush rewrite rules for custom post types. */ add_action( 'after_switch_theme', 'flush_rewrite_rules' );
If you're developing a theme, while building it you can use this snippet of code that will flush rewrite rules when the file containing it is changed, or every 48 hours:
// do not use on live/production servers add_action( 'init','maybe_rewrite_rules' ); function maybe_rewrite_rules() { $ver = filemtime( __FILE__ ); // Get the file time for this file as the version number $defaults = array( 'version' => 0, 'time' => time() ); $r = wp_parse_args( get_option( __CLASS__ . '_flush', array() ), $defaults ); if ( $r['version'] != $ver || $r['time'] + 172800 < time() ) { // Flush if ver changes or if 48hrs has passed. flush_rewrite_rules(); // trace( 'flushed' ); $args = array( 'version' => $ver, 'time' => time() ); if ( ! update_option( __CLASS__ . '_flush', $args ) ) add_option( __CLASS__ . '_flush', $args ); } }
Since: 3.0
flush_rewrite_rules() is located in wp-includes/rewrite.php