J'ai installé Monkey Man Rewrite Analyzer, j'ai une règle installée, elle apparaît dans la liste, si je la teste avec Monkey Man, elle dit qu'elle se déclenchera mais en réalité, qu'est-ce qui ne va pas?
add_action('init', array($this, 'register_crr_jsonwebservice'), 99);
public function register_crr_jsonwebservice() {
//Add the rewrite rule for this specific json controller
add_rewrite_tag( '%ticket%', '([a-zA-Z0-9]+)');
add_rewrite_rule( 'cjson/fullticket/([a-zA-Z0-9]+)/', 'index.php?p=1312&ticket=$matches[1]', 'top' );
flush_rewrite_rules();
}
Testez cette règle dans le MMRA:
cjson/fullticket/231412tgsxcasfasdfas /
Fonctionne bien, testez-le sur wordpress en copiant directement la même URL? 404, non trouvé ... qu'est-ce que je fais mal?
Honnêtement, vous ne pouvez pas déboguer votre code, mais celui-ci fonctionne:
function register_crr_jsonwebservice( $wp_rewrite ) {
//Add the rewrite rule for this specific json controller
add_rewrite_tag( '%ticket%', '([a-zA-Z0-9]+)');
$wp_rewrite->rules = array(
'cjson/fullticket/?([a-zA-Z0-9]{1,})/?$' => $wp_rewrite->index . "?page_id=243&ticket=".$matches[1]
) + $wp_rewrite->rules;
}
add_action( 'generate_rewrite_rules', 'register_crr_jsonwebservice' );
N'appelez pas flush_rewrite_rules (); de cette fonction - conduira à une erreur. Et peut-être que add_rewrite_tag devra être appelé à partir d'une fonction séparée sur init - je ne l'ai pas testé.