J'ai eu beaucoup de problèmes avec cette fonction, je ne sais pas quoi faire, car j'ai tout essayé.
J'ai un type de message personnalisé, appelons-le étude. La structure de cette URL est
http://example.com/study/studyname
Ils ont différentes sections, je veux avoir la nouvelle structure comme ceci:
http://example.com.com/study/studyname/view/view_arg
Jusqu'ici, j'ai essayé les fonctions add_rewrite_endpoint()
et add_rewrite_rule()
, avec n'importe quel résultat.
J'ai aussi essayé de désactiver tous mes plugins au cas où l'un d'eux serait la raison, mais échouait toujours. Ceci est mon code, j'ai essayé les deux options séparément:
add_filter('init', 'add_rewrite_rules');
function add_rewrite_rules() {
global $wp_rewrite;
add_rewrite_endpoint('view', EP_PERMALINK | EP_PAGES, 'view' );
$wp_rewrite->flush_rules();
}
Ici, je le teste également avec EP_ALL
, sans la view
, sans règles de vidage ...
Aussi, j'ai essayé de créer manuellement la règle de réécriture:
add_rewrite_rule(
'study/([^/]+)/view/([^/]+)?$',
'index.php?study=$matches[1]&view=$matches[2]',
'top'
);
Et j'ai lu que le query_var devrait être utilisé configuré aussi, alors j'ai fait:
add_filter( 'query_vars', 'conf_query_vars' );
function conf_query_vars($query_vars){
$query_vars[] = 'view';
return $query_vars;
}
Je vais me tuer, si j'essaye l'URL avec le paramètre lui-même (quelque chose comme http://example.com/study/studyname/?view=view_args
), ça marche à merveille, mais je ne veux pas montrer cette structure.
Votre code devrait (et à partir d'une vérification rapide) fonctionner en principe. Vous devriez ne pas rincer le permalien à chaque chargement de page, juste une fois.
Utilisez l'assistant de réécriture, tel que Monkeyman Rewrite Analyzer , pour voir si les règles sont générées, ce qu'elles sont et comment elles correspondent aux URL réelles de votre site.