Estou com um problema estranho, mas as regras de regravação não funcionam corretamente.
Eu tentei usar flush_rewrite_rules();
e flush_rewrite_rules(true);
.
Eu também tentei globalizar $wp_rewrite
usando $wp_rewrite->flush_rules();
e $wp_rewrite->flush_rules(true);
Nenhuma das duas parece estar liberando as regras de reescrita corretamente. Essas chamadas estão realmente liberando as regras de reescrita quando chamadas. Como eu sei disso? Usando a solução para depuração de regra de regravação .
Atualmente, eu reescrevi as regras liberadas na ativação do plug-in e na desativação do plug-in. Não há problemas lá.
Eu tenho uma página de configurações de administração do plug-in para os usuários configurarem o plug-in. Algumas das configurações ajustam a estrutura do link permanente, portanto, as regras de regravação precisam ser liberadas na página de configurações de administração do plug-in "Salvar configurações". (Usa o padrão update_option();
) para salvar as configurações.
Gostaria de observar que, dependendo das configurações especificadas, os tipos de postagem personalizados são criados para corresponder às configurações especificadas pelo usuário. Portanto, as regras de regravação devem ser liberadas imediatamente após as configurações serem salvas. É aqui que as coisas não estão funcionando adequadamente.
A solução de link acima para depurar as regras de reescrita fornecidas por @toscho
está exibindo que está descarregando toneladas de reescrita regras. No entanto, ao visitar o tipo singular de postagem personalizada, ou até o arquivo de tipo de postagem personalizado, cada um retornará como erros 404.
O tipo de postagem personalizada é registrado corretamente e de forma adequada. Eu sei com certeza que não é o problema.
Imediatamente após salvar as configurações da página de administração do plug-in. Os tipos de postagem personalizados são criados, a estrutura de permalink é ajustada e todas as regras de regravação são tentadas a serem liberadas.
Os tipos de postagem personalizados são carregados sempre e carregados em init
como normal.
Por alguma razão, as regras de reescrita não são liberadas corretamente, porque, como eu disse antes, visitando seções singulares ou de arquivo do tipo de postagem personalizada return 404 errors.
Agora, a parte estranha, se tudo o que eu faço é simplesmente visitar a página de configurações de permalinks de administração e depois voltar para o front-end para ver seções singulares ou de arquivamento do tipo de postagem personalizado, elas funcionam magicamente conforme o esperado.
O que essa administração permalinks na página de configurações faz que eu não estou fazendo isso permite que as regras de reescrita sejam liberadas apropriadamente e as minhas não?
Quero dizer, como uma solução temporária, estou redirecionando o usuário para a página de configurações permalinks de administração depois de salvar a página de configurações de administração do plug-in, mas essa não é uma solução ideal. Eu prefiro que as regras de reescrita sejam liberadas corretamente no código do meu plugin.
Existe algum ponto no WordPress em que liberar as regras de reescrita simplesmente não elimina TODAS as regras?
admin_menu
- A página de configurações de plugins é adicionada à administração do WordPress.
add_options_page()
- A página de configurações de plugins é adicionada no menu Configurações.
A página Configurações é renderizada no retorno de chamada de add_options_page()
. Este também é o local em que $_POST
é processado para atualizar as configurações do plug-in e liberar as regras de reescrita.
Como essa já é uma pergunta longa, eu estaria disposto a fornecer blocos de código (se ajudar) em um link externo que ajudasse a produzir uma resposta válida.