web-dev-qa-db-ja.com

どのようにしてwp_optionsテーブルからデフォルトの書き換え規則を永久に削除しますか?

私たちのwp_optionsテーブルにはたくさんの書き換えルールが保存されています。私たちのサイトで使用していないエントリ(コメントフィード、ページの添付ファイルなど)を永久に削除したいです。

次回flush_rules()が呼び出されたときにこれらのルールをクリアし、データベースに保存されないようにするための最善の方法は何ですか? wp-includes/rewrite.phpのようなcore WPファイルを編集するのではなく、functions.phpで、またはスタンドアロンのプラグインとして機能するソリューションをお勧めします。

3
Andres Lucero

格納されたルールを変更するよりも、格納される前にルールを変更する方が信頼性が高いでしょう。

  • 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);
2
Rarst

あなたが望むことをするためには、あなたが持っているそれぞれのルールに対して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');
}

これが必要な人すべてに役立つことを願っています。

0
Andres Abello