web-dev-qa-db-fra.com

add_rewrite_endpoint ne fonctionne pas

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.

1
Fernando Vera

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.

1
Rarst