J'utilise les types de messages personnalisés. J'essaye ceci:
functions.php
add_action( 'admin_init', 'flush_rewrite_rules' );
Maintenant, je voudrais enlever ceci à nouveau. J'essaye ceci:
remove_action( 'admin_init', 'flush_rewrite_rules' );
Je ne suis pas sûr que cela fonctionne correctement. Comment puis-je tester si les règles de réécriture ne sont plus vraiment caduques?
Pour voir si l’option 'rewrite_rules'
a été réinitialisée - c’est ce que flush_rewrite_rules()
fait en interne - connectez-vous aux actions sur les options et enregistrez ce qui se passe.
Le petit plugin suivant fait cela. Il vous dira quel code a vidé les règles de réécriture et à quoi elles ressemblaient avant et après le rinçage. Si aucun flush ne s'est produit, il indique simplement nothing logged
. :)
<?php
/* Plugin Name: Debug rewrite rule flushing */
add_action( 'plugins_loaded', 'wpse_67368_debug_rewrite_flushes' );
function wpse_67368_debug_rewrite_flushes()
{
static $log = array ();
if ( 'plugins_loaded' === current_filter() )
{
$hooks = array (
'added_option',
'updated_option',
'deleted_option',
'shutdown'
);
foreach ( $hooks as $hook )
{
add_action( $hook, __FUNCTION__, 10, 3 );
}
return;
}
if ( 'shutdown' === current_filter() )
{
empty ( $log ) and $log = 'nothing logged';
printf( '<pre>%s</pre>', var_export( $log, TRUE ) );
return;
}
$args = func_get_args();
$option = array_shift( $args );
if ( 'rewrite_rules' === $option )
{
$log[] = array (
'filter' => current_filter(),
'option' => $option,
'args' => $args,
'backtrace' => debug_backtrace()
);
}
}