Ich schreibe ein Plugin, das (unter anderem) einen benutzerdefinierten Beitragstyp instanziiert. Es ist ein Multisite-Plugin und befindet sich im Verzeichnis mu-plugins .
Was ist in dieser Situation die beste Vorgehensweise für den Umgang mit flush_rewrite_rules () ? Für ein "normales" Plugin würden Sie dies in einem Aktivierungs-Hook tun - was für ein Plugin, das unbedingt verwendet werden muss, nicht möglich ist, da diese Hooks nicht verfügbar sind.
Da dies nach der Registrierung des benutzerdefinierten Beitragstyps ein "einmaliges" Ereignis sein soll, wäre es sinnvoll, in meiner Klasse, die das CPT registriert, so etwas zu tun:
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' ) );
Die CPT-Registrierung erfolgt also bei jeder Init-Aktion. Wenn ich dieses Recht habe, erfolgt das Löschen der Umschreiberegeln nur einmal. Immer .
Bin ich auf dem richtigen Weg?
(bearbeiten): Ich habe es gerade versucht; Mein CPT gibt einen 404 nicht gefundenen Fehler aus, daher funktionieren die Umschreibregeln nicht :-(
(Bearbeiten # 2): Ich habe die Lösung für den Zugriff auf die globale Variable ausprobiert, wie in dieser Frage gezeigt: Wie werden Umschreibregeln auf mehreren Standorten zuverlässig gelöscht? - Ich werde mein Codebeispiel oben aktualisieren, um dies zu zeigen. Leider wird beim Laden eines CPT immer noch ein 404-Fehler angezeigt. Ich sehe, dass die Umschreiberegeln in der Datenbank gespeichert werden. Es scheint nur, dass sie nicht verwendet werden. Ich bin verloren.