web-dev-qa-db-fra.com

Est-ce que flush_rewrite_rules () supprime toutes les règles ajoutées par d'autres plugins ainsi que les miennes?

Je développe un plugin et j'utilise add_rewrite_rule suivi de flush_rewrite_rules lors de l'activation du plugin.

Lors de la désactivation du plugin, j'utilise simplement flush_rewrite_rules pour supprimer la règle que j'avais ajoutée.

Supposons maintenant qu'un autre plugin ait également ajouté une règle de réécriture. L'appel de flush_rewrite_rules ne supprimerait-il pas cette règle de réécriture des autres plug-ins, même si l'autre plug-in est toujours actif?

MODIFIER:

Quelques notes à retenir:

  • flush_rules() fait la même chose que flush_rewrite_rules(). Voir les commentaires de Milo ci-dessous sa réponse acceptée.

  • Il existe un problème dans le suivi des bogues https://core.trac.wordpress.org/ticket/29118 qui indique la meilleure pratique, mais montre également le problème de devoir utiliser INIT pour ajouter votre règle de manière récurrente.

1
jsherk

C'est pourquoi vous devez ajouter des règles de réécriture pour l'action init à chaque requête, ainsi que pour l'activation du plug-in.

Lorsque votre hook de désactivation de plugin est exécuté, d'autres hooks init de plugin ont déjà été exécutés. Par conséquent, leurs règles figurent dans la variable globale qui les stocke pendant toute la durée de vie de chaque requête.

Le vidage des règles de réécriture vide l'option qui stocke les règles à long terme, puis la repeuple avec le contenu de cette variable globale.

2
Milo