J'écris un plugin qui instancie un type de message personnalisé (entre autres). Il s'agit d'un plugin multisite et réside dans le répertoire mu-plugins .
Quelle est la meilleure pratique pour gérer flush_rewrite_rules () dans cette situation? Pour un plugin `` normal '', vous le feriez dans un hook d'activation - ce qui ne sera pas possible pour un plugin indispensable car ces hooks ne sont pas disponibles.
Étant donné que cela est censé être un événement "ponctuel" après l'enregistrement du type de publication personnalisé, serait-il sensé de faire quelque chose comme ceci dans ma classe qui enregistre le 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' ) );
Ainsi, l'enregistrement CPT se produit à chaque action 'init' - mais si j'ai ce droit, les règles de réécriture ne se produisent qu'une seule fois. Jamais .
Suis-je sur la bonne voie?
(modifier): Je viens de l'essayer; mon CPT donne une erreur 404 introuvable, donc les règles de réécriture ne fonctionnent pas :-(
(edit # 2): J'ai essayé la solution pour accéder à la variable globale comme indiqué dans cette question: Comment vider de manière fiable les règles de réécriture sur multisite? - Je mettrai à jour mon exemple de code ci-dessus pour le montrer. Malheureusement, j'obtiens toujours une erreur 404 lorsque j'essaie de charger un CPT. Je vois que les règles de réécriture sont stockées dans la base de données, il semble qu'elles ne soient pas utilisées. Je suis perdu.