J'appelle la fonction ci-dessous après chaque "enregistrement des modifications" dans le fichier de paramètres de mon plug-in via le rappel de désinfection.
Le plug-in permet à l'utilisateur final de changer de base de catégorie. Il doit réécrire complètement les permaliens pour éviter les erreurs 404. Cependant, je reçois toujours des 404. La seule façon de les résoudre consiste à accéder au gestionnaire "Paramètres> Permaliens" et à cliquer sur "Enregistrer les modifications".
Que me manque-t-il dans cette fonction pour me débarrasser des 404?
function myplugin_refresh() {
wp_cache_flush();
global $wp_rewrite;
$my_permalinks = get_option('permalink_structure');
$wp_rewrite->set_permalink_structure($my_permalinks);
$wp_rewrite->flush_rules();
}
Vérifiez le code dans les lignes 91 à 129 (3.0.5) de wp-admin/options-permalink.php. Comparez si vous faites tout cela.
wp_rewrite n'est pas initialisé dans register_activation_hook ()
Dans votre code d'activation du crochet, ajoutez cette ligne ....
add_option('reset_permalink_structure',true);
Dans votre code de plugin, ajoutez ....
add_action('admin_init',function(){
if( get_option('reset_permalink_structure') ) {
global $wp_rewrite;
$my_permalinks = get_option('permalink_structure');
$wp_rewrite->set_permalink_structure($my_permalinks);
$wp_rewrite->flush_rules();
add_option('reset_permalink_structure',false);
}
}