J'essaye de partir de:
http://www.example.com/product?level1=value1&level2=value2&level3=value3&level4=value4
À:
http://www.example.com/product/value1/value2/value3/value4
Parfois, toutes les valeurs ne sont pas définies. Il doit donc fonctionner avec seulement 2 valeurs:
http://www.example.com/product/value1/value2
La page http://www.example.com/product/
utilise son propre fichier de modèle.
Voici à quoi ressemble mon code:
function my_rewrite_rules( $wp_rewrite ) {
$wp_rewrite->rules =
array_merge( array(
'^product/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$' =>
'index.php?level1=$matches[1]&level2=$matches[2]&level3=$matches[3]&level4=$matches[4]'
), $wp_rewrite->rules);
}
add_filter( 'generate_rewrite_rules', 'my_rewrite_rules' );
function my_rewrite_queryvars( $qvars ) {
$qvars[] = 'level1';
$qvars[] = 'level2';
$qvars[] = 'level3';
$qvars[] = 'level4';
return $qvars;
}
add_filter( 'query_vars', 'my_rewrite_queryvars' );
Cela fonctionne lorsque je cherche à obtenir le query_vars, mais cela me donne également une page 404, et non le bon modèle.
Qu'est-ce que je fais mal?
Ok, j'ai trouvé une solution.
Tout d'abord, je dois choisir l'identifiant. Essayé avec p = id, mais la page est toujours renvoyée sans les paramètres. Tout ce que j'avais à faire, c'était d'ajouter page_id = id à la place.
J'aurais aussi besoin d'ajouter une réécriture pour chaque nouveau niveau.