J'utilise l'API Paramètres pour permettre à l'utilisateur d'activer l'option has_archive
sur certains types de publication personnalisés. Lorsque l'utilisateur active ou désactive les archives, je souhaite effacer les règles de réécriture. Si j'avais moi-même écrit la fonction de sauvegarde, je pourrais simplement appeler flush_rewrite_rules()
et en finir, mais l'API des paramètres se charge de la sauvegarde pour moi. Y a-t-il un crochet quelque part que je peux utiliser?
add_action('admin_init', 'my_plugin_register_settings');
function my_plugin_register_settings() {
if (delete_transient('my_plugin_flush_rules')) flush_rewrite_rules();
register_setting('my_plugin', 'my_plugin_settings', 'my_plugin_sanitize');
// add_settings_section(), add_settings_field(),...
}
function my_plugin_sanitize($input) {
set_transient('my_plugin_flush_rules');
return $input;
}
Vous devez simplement visiter la page Paramètres> Permalink (vous n’y devez rien faire) après avoir enregistré les paramètres.
Si j'avais écrit la fonction de sauvegarde moi-même, je pourrais simplement appeler flush_rewrite_rules ()
Pas assez. flush_rewrite_rules()
devra être appelé une fois le type de publication personnalisé mis à jour pour refléter les modifications, c'est-à-dire une fois que vous l'avez enregistré. Vous devrez donc l'appeler lors du chargement de la page suivante, une fois le CPT enregistré.
Vous pouvez utiliser un transitoire pour déclencher flush_rewrite_rules () le prochain ( et uniquement le next ) init
(et après l’enregistrement de CPT). Pour être clair, flush_rewrite_rules()
est coûteux et ne devrait pas être appelé régulièrement. C’est pourquoi je suggère simplement de dire aux utilisateurs de plug-in de visiter la page Paramètres> Lien permanent après avoir modifié les options de lien permanent - de cette manière, les règles ne sont plus effacées lorsque son contenu est réellement modifié. nécessaire.