Я пишу плагин, который создает пользовательский тип сообщения (среди прочего). Это многосайтовый плагин и живет в каталоге mu-plugins .
Какова лучшая практика для обработки 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 not found, поэтому правила перезаписи не работают :-(
(правка № 2): я попробовал решение для доступа к глобальной переменной, как показано в этом вопросе: как надежно очистить правила перезаписи на мультисайтах? - Я обновлю мой пример кода выше, чтобы показать это. К сожалению, я все еще получаю ошибку 404 при попытке загрузить CPT. Я вижу, что правила перезаписи хранятся в базе данных, просто кажется, что они не используются. Я потерялся.