Piszę wtyczkę, która tworzy instancję niestandardowego typu posta (między innymi). Jest to wielostanowiskowa wtyczka i żyje w katalogu wtyczek mu .
Jaka jest najlepsza praktyka obsługi flush_rewrite_rules () w tej sytuacji? W przypadku „normalnej” wtyczki zrobiłbyś to w haku aktywacyjnym - co nie będzie możliwe w przypadku wtyczki, której należy użyć, ponieważ te haki nie są dostępne.
Ponieważ ma to być zdarzenie „jednorazowe” po zarejestrowaniu niestandardowego typu postu, czy warto zrobić coś takiego w mojej klasie, która zarejestruje 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' ) );
Tak więc rejestracja CPT odbywa się przy każdej akcji „inicjowania” - ale jeśli mam to prawo, przepisywanie reguł jest powtarzane tylko raz. Ever .
Czy jestem na dobrej drodze?
(edycja): Właśnie próbowałem; mój CPT daje błąd 404 nie znaleziono, więc reguły przepisywania nie działają :-(
(edycja # 2): Wypróbowałem rozwiązanie umożliwiające dostęp do zmiennej globalnej, jak pokazano w tym pytaniu: Jak niezawodnie opróżnić reguły przepisywania na wielu stronach? - Zaktualizuję mój przykład kodu powyżej, aby to pokazać. Niestety nadal pojawia się błąd 404 podczas próby załadowania CPT. Widzę, że reguły przepisywania są przechowywane w bazie danych, wygląda na to, że nie są używane. Zgubiłem się.