web-dev-qa-db-ja.com

Flush_rewrite_rules()は私のものと同様に他のプラグインによって追加されたすべての規則を削除しますか?

私はプラグインを開発していて、プラグインのアクティブ化中にadd_rewrite_ruleとそれに続くflush_rewrite_rulesを使用しています。

プラグインの無効化では、追加したルールを削除するためにflush_rewrite_rulesを使用しています。

それでは、別のプラグインにも書き換えルールが追加されたとしましょう。他のプラグインがまだアクティブであっても、flush_rewrite_rulesを呼び出してもこの他のプラグインが削除されないのでしょうか。

編集:

覚えておくべきいくつかのメモ:

  • flush_rules()flush_rewrite_rules()と同じことをします。彼の認められた答えの下のMiloのコメントを見てください。

  • バグトラッカー https://core.trac.wordpress.org/ticket/29118 には、ベストプラクティスを示しているだけでなく、 conitinuallyあなたのルールを追加するためにINITを使わなければならないという問題。

1
jsherk

これが、リクエストごとのinitアクションとプラグインのアクティブ化に書き換えルールを追加する必要がある理由です。

あなたのプラグイン無効化フックが実行されるとき、他のプラグインinitフックは既に実行されているので、それらのルールは各リクエストの寿命の間それらを保存するグローバル変数に存在します。

書き換えルールをフラッシュすると、そのルールを長期的に保存するオプションが空になり、そのグローバル変数に含まれているものがすべて再入力されます。

2
Milo