J'ai un petit problème étrange avec les règles de réécriture qui ne sont pas correctement vidées.
J'ai essayé d'utiliser flush_rewrite_rules();
et flush_rewrite_rules(true);
.
J'ai aussi essayé de mondialiser en $wp_rewrite
utilisant $wp_rewrite->flush_rules();
et$wp_rewrite->flush_rules(true);
Aucun des deux ne semble vider correctement les règles de réécriture. Ces appels vident en effet les règles de réécriture lorsqu'ils sont appelés. Comment le sais-je? Utilisation de la solution de débogage du rinçage des règles de réécriture .
Actuellement, j'ai des règles de réécriture vidées sur l'activation et la désactivation du plugin. Aucun problème là-bas.
J'ai une page de paramètres d'administration du plugin pour que les utilisateurs puissent configurer le plugin. Certains paramètres ajustent la structure du permalien, de sorte que les règles de réécriture doivent être effacées sur la page des paramètres d'administration du plugin "Enregistrer les paramètres". (Utilise la norme update_option();
) pour enregistrer les paramètres.
Je voudrais noter qu'en fonction des paramètres spécifiés, des types de publication personnalisés sont créés pour correspondre aux paramètres spécifiés par l'utilisateur. Les règles de réécriture doivent donc être vidées immédiatement après l'enregistrement des paramètres. C'est là que les choses ne fonctionnent pas correctement.
La solution de lien ci-dessus pour le débogage des règles de réécriture fournie par @toscho
affiche qu'elle vide des tonnes de règles de réécriture. Cependant, lors de la visite de l'élément singulier de type de publication personnalisé, ou même de l'archive de type de publication personnalisée, chacun renvoie des erreurs 404.
Le type de publication personnalisé est enregistré correctement et de manière appropriée. Je sais avec certitude que ce n'est pas le problème.
Immédiatement après l'enregistrement des paramètres de la page d'administration du plugin. Les types de publication personnalisés sont créés, la structure du lien permanent est ajustée et toutes les règles de réécriture sont tentées d'être vidées.
Les types de publication personnalisés sont ensuite toujours chargés et chargés init
comme d'habitude.
Pour une raison quelconque, les règles de réécriture ne sont pas vidées correctement, car comme je l'ai déjà dit, la visite des sections singulières ou d'archivage du type de message personnalisé renvoie des erreurs 404.
Maintenant, la partie étrange, si tout ce que je fais, c'est simplement visiter la page des paramètres de permaliens d'administration, puis revenir à la partie frontale pour afficher les sections singulières ou d'archivage du type de publication personnalisé, elles fonctionnent comme par magie.
Que fait cette page de paramètres de permaliens d'administration que je ne fais pas pour permettre aux règles de réécriture de vider correctement et la mienne non?
Je veux dire, en tant que solution temporaire, je redirige l'utilisateur vers la page des paramètres d'administration des permaliens après avoir enregistré la page des paramètres d'administration du plugin, mais ce n'est pas une solution idéale. Je préférerais que les règles de réécriture soient juste correctement vidées dans le code de mon plugin.
Y a-t-il un certain point dans WordPress où le rinçage des règles de réécriture ne vide tout simplement plus TOUTES les règles?
admin_menu
- La page des paramètres du plugin est ajoutée à l'administration WordPress.
add_options_page()
- La page des paramètres du plugin est ajoutée dans le menu Paramètres.
La page des paramètres est rendue dans le rappel de add_options_page()
. C'est également là où $_POST
est traité la mise à jour des paramètres du plugin et le vidage des règles de réécriture.
Puisque c'est déjà une longue question, je serais prêt à fournir des blocs de code (si cela aide) dans un lien hors site pour aider à produire une réponse valide.
init
laquelle s'inscrit les types de messages. Je me suis dit que les paramètres de la page étaient enregistrés et que la page se rechargeait ... puis tirait à init
nouveau le crochet pour enregistrer les types de messages nécessaires. J'ai donc pensé que les types de messages seraient déjà chargés, et tout ce que je devais faire était de mettre à jour l'option, puis de vider les règles de réécriture de ma page de paramètres de plugin. Je posterai une réponse sur la façon dont j'ai trouvé une solution.
flush_rewrite_rules
, ce qui supprime simplement l'rewrite_rules
option et la régénère, vous pouvez ouvrir le fichierwp-admin/options-permalinks.php
et voir où cela se produit. puisque cette opération supprime simplement l'option entière, il n'est pas possible de vider partiellement les règles.