Estoy escribiendo un complemento que crea una instancia de un tipo de publicación personalizada (entre otras cosas). Es un complemento multisitio y vive en el directorio mu-plugins .
¿Cuál es la mejor práctica para manejar flush_rewrite_rules () en esta situación? Para un complemento 'normal', lo haría en un gancho de activación, que no será posible para un complemento de uso obligatorio ya que esos ganchos no están disponibles.
Dado que se supone que es un evento "único" después de registrar el tipo de publicación personalizada, ¿tendría sentido hacer algo como esto en mi clase que registre el 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' ) );
Entonces, el registro de CPT ocurre en cada acción 'init', pero si tengo este derecho, la descarga de reglas de reescritura solo ocurre una vez. Nunca .
¿Estoy en el camino correcto?
(editar): acabo de probarlo; mi CPT está dando un error 404 no encontrado, por lo que las reglas de reescritura no funcionan :-(
(editar # 2): Probé la solución para acceder a la variable global como se muestra en esta pregunta: ¿Cómo vaciar de forma confiable las reglas de reescritura en sitios múltiples? - Actualizaré mi ejemplo de código anterior para mostrar esto. Lamentablemente, todavía recibo un error 404 al intentar cargar un CPT. Veo que las reglas de reescritura se almacenan en la base de datos, simplemente parece que no se están utilizando. Estoy perdido.