Estou escrevendo um plugin que instancia um tipo de postagem personalizado (entre outras coisas). É um plugin multisite e vive no diretório mu-plugins .
Qual é a melhor prática para lidar com flush_rewrite_rules () nessa situação? Para um plug-in 'normal', você faria isso em um gancho de ativação - o que não será possível para um plug-in obrigatório, pois esses ganchos não estão disponíveis.
Como esse deveria ser um evento "único" depois de registrar o tipo de postagem personalizado, faria sentido fazer algo assim na minha classe que registra o CPT:
private function check_flush_my_CPT() {
global $wp_rewrite;
if ( !get_option('my_plugin_firstrun') ) {
$wp_rewrite->init();
$wp_rewrite->flush_rules(true);
update_option('my_plugin_firstrun', 'yes');
}
}
public function register_my_CPT() {
// do all the CPT setup steps for the $args array...
register_post_type('my_CPT', $args);
$this->check_flush_my_CPT();
}
add_action( 'init', array(&$this, 'register_my_CPT' ) );
Portanto, o registro do CPT acontece em todas as ações 'init' - mas se eu tiver esse direito, as regras de reescrita liberadas acontecem apenas uma vez. Ever .
Estou no caminho certo?
(edit): Eu apenas tentei; meu CPT está dando um erro 404 não encontrado, então as regras de reescrita não estão funcionando :-(
(edit # 2): Tentei a solução para acessar a variável global, como mostrado nesta pergunta: Como liberar com segurança regras de reescrita em multisite? - Vou atualizar meu exemplo de código acima para mostrar isso. Infelizmente ainda estou recebendo o erro 404 ao tentar carregar um CPT. Vejo que as regras de reescrita estão sendo armazenadas no banco de dados, parece que elas não estão sendo usadas. Estou perdido.