私たちのwp_optionsテーブルにはたくさんの書き換えルールが保存されています。私たちのサイトで使用していないエントリ(コメントフィード、ページの添付ファイルなど)を永久に削除したいです。
次回flush_rules()が呼び出されたときにこれらのルールをクリアし、データベースに保存されないようにするための最善の方法は何ですか? wp-includes/rewrite.phpのようなcore WPファイルを編集するのではなく、functions.phpで、またはスタンドアロンのプラグインとして機能するソリューションをお勧めします。
格納されたルールを変更するよりも、格納される前にルールを変更する方が信頼性が高いでしょう。
flush_rewrite_rules()
呼び出しWP_Rewrite->flush_rules()
WP_Rewrite->wp_rewrite_rules()
WP_Rewrite->rewrite_rules()
最後には、ルールを変更するための適切なフックがあります(それ以降は、フラッシュごとに通常どおりに保存されます)。
do_action_ref_array('generate_rewrite_rules', array(&$this));
$this->rules = apply_filters('rewrite_rules_array', $this->rules);
あなたが望むことをするためには、あなたが持っているそれぞれのルールに対してadd_rewrite_ruleを追加しなければならないでしょう。ユーザーがオプション配列に追加する新しい規則を保存しています。ユーザーがルールを削除したい場合は、一度選択したら、配列から設定を解除します。
function remove_rule($user_input){
foreach($rules as $key => $rule){
if($rule === $user_input){
unset($rules[$key]);
}
}
return $rules;
}
その後、保存されているすべてのルールを追加して再びhtaccessを再構築します。
foreach($rules as $rule){
add_rewrite_rule($rule['pattern'], $rule['url'], 'top');
}
これが必要な人すべてに役立つことを願っています。