Sto scrivendo un plugin che crea un'istanza di un tipo di post personalizzato (tra le altre cose). È un plug-in multisito e vive nella directory mu-plugins .
Qual è la migliore pratica per gestire flush_rewrite_rules () in questa situazione? Per un plug-in 'normale' lo faresti in un hook di attivazione - che non sarà possibile per un plug-in da usare poiché questi hook non sono disponibili.
Dal momento che questo dovrebbe essere un evento "una tantum" dopo aver registrato il tipo di post personalizzato, avrebbe senso fare qualcosa del genere nella mia classe che registra il 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' ) );
Quindi, la registrazione CPT avviene su ogni azione "init" - ma se ho questo diritto, le regole di riscrittura si verificano solo una volta. Mai .
Sono sulla buona strada?
(modifica): l'ho appena provato; il mio CPT sta dando un errore 404 non trovato, quindi le regole di riscrittura non funzionano :-(
(modifica n. 2): ho provato la soluzione per accedere alla variabile globale, come mostrato in questa domanda: Come svuotare in modo affidabile le regole di riscrittura su più siti? - Aggiornerò il mio esempio di codice sopra per mostrarlo. Sfortunatamente sto ancora ricevendo un errore 404 quando provo a caricare un CPT. Vedo che le regole di riscrittura vengono archiviate nel database, sembra proprio che non vengano utilizzate. Mi sono perso.