web-dev-qa-db-fra.com

Monkey Man Rewrite Analyzer dit que ma règle va se déclencher mais pas

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?

1
Mathieu Dumoulin

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é.

1
david.binda