Я пишу плагін, який створює спеціальний тип публікації (серед іншого). Це багатопрофільний плагін і живе в каталозі mu-плагінів .
Яка найкраща практика поводження з flush_rewrite_rules () у цій ситуації? Для "звичайного" плагіна ви б це зробили в гачку активації - що не може бути можливим для плагіна, який потрібно використовувати, оскільки ці гачки недоступні.
Оскільки це має бути подія "одноразово" після реєстрації користувальницького типу публікації, чи має сенс зробити щось подібне у своєму класі, який реєструє 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' ) );
Так, реєстрація CPT відбувається під час кожної дії "init", але якщо я маю це право, правила перезапису стирання відбувається лише один раз. Колись .
Я на правильному шляху?
(редагувати): я просто спробував; мій CPT видає помилку 404 не знайдено, тому правила переписування не працюють :-(
(редагування №2): Я спробував рішення для доступу до глобальної змінної, як показано в цьому запитанні: Як надійно очистити правила перезапису на багатосайт? - Я оновлю приклад коду вище, щоб це показати. На жаль, я все ще отримую помилку 404 при спробі завантажити CPT. Я бачу, що правила перезапису зберігаються в базі даних, просто здається, що вони не використовуються. Я загубився.