I have the following code:
function b09_custom_rewrite_rule() {
add_rewrite_rule(
'utils/([^/]+)/?',
'index.php?utils=$matches[1]',
'top'
);
flush_rewrite_rules();
}
add_action('init', 'b09_custom_rewrite_rule', 10, 0);
function b09_query_vars( $query_vars ) {
array_push( $query_vars, 'utils' );
return $query_vars;
}
add_filter( 'query_vars', 'b09_query_vars' );
function b09_template_redirect(){
global $wp_query;
$utils_page = get_query_var("utils");
var_dump( $utils_page );
if( $utils_page ):
// custom function
exit();
endif;
}
add_filter( 'template_redirect', 'b09_template_redirect' );
Everything works as expected, but as soon as I remove the line flush_rewrite_rules()
, WordPress is disabling the rule on the next reload.
Any Ideas?