We have tons of rewrite rules saved in our wp_options table and I’d like to permanently remove any entries that we’re not using on our site (such as comment feeds, page attachments, etc.).

What’s the best way to clear these rules and prevent them from being saved to the database the next time flush_rules() is called? I’d prefer a solution that works in functions.php or as a standalone plugin, rather than editing core WP files such as wp-includes/rewrite.php.

2 Answers
2

Rather than modifying stored rules it would be more reliable to modify rules before they are stored.

  • flush_rewrite_rules() calls
  • WP_Rewrite->flush_rules()
  • WP_Rewrite->wp_rewrite_rules()
  • WP_Rewrite->rewrite_rules()

Inside last there are fitting hooks to modify rules (after which result they will be saved as usual on each flush):

do_action_ref_array('generate_rewrite_rules', array(&$this));
$this->rules = apply_filters('rewrite_rules_array', $this->rules);

Leave a Reply

Your email address will not be published. Required fields are marked *