A função flush_rewrite_rules
é confiável em alguns contextos, como um tema ou um plug-in baseado em ganchos, mas não tenho certeza se funciona para mu-plugin
Minha declaração é baseada no fato de que o WordPress é inicializado desta maneira:
- chame o arquivo
wp-settings.php
- chame o gancho
do_action( 'muplugins_loaded' );
, aqui seu plug-in foi inicializado - chame
$GLOBALS['wp_rewrite'] = new WP_Rewrite();
aqui o métodoflush_rules
está inicializado e disponível a partir de agora -
do_action( 'setup_theme' );
é chamado e eu aposto todo o meu dinheiro que neste gancho oflush_rewrite_rules
funcionará
Solução?
Pessoalmente, acho confiável a exclusão da opção rewrite_rules.
delete_option('rewrite_rules');
ou
update_option('rewrite_rules', '' );
Sempre que o WordPress não tiver o rewrite_rules
, ele será construído de volta, e também o método flush_rules
.
Existem pontos no fluxo de execução do WordPress onde funções como esta não estão disponíveis. mesmo no núcleo do WordPress eu encontrei esta afirmação
// Rewrite rules can't be flushed during switch to blog.
delete_option( 'rewrite_rules' );
O único problema seria o desempenho, não faça isso em todas as solicitações porque é um processo difícil de reconstruí-las. Como eu posso ver, você quer liberá-los apenas na primeira chamada e isso é bom.
PS: Eu não sou um fã de autopromoção, mas também escrevi um artigo sobre isso há muito tempo e eu acho que ainda aguenta isso