Ok, j'ai des exemples de travail pour les 3 types de demandes. Il a fallu une tonne d'expérimentation et de déconner pour les faire travailler. Je suppose que Milo est bon pour pousser les gens à répondre à leurs propres questions.
Après d'innombrables modifications et rafraîchissement des permaliens, j'ai réalisé qu'il était beaucoup plus facile de comprendre les URL en dehors de add_rewrite_url et une fois qu'elles ont travaillé, définissez la réécriture. Exemple d'être index.php?param=foo&post_type=example_type.
Une autre chose évidente, mais l'ajouter ici pour que cela puisse aider quelqu'un d'autre. Vous devez définir les règles de type de publication personnalisées add_rewrite_rule AVANT de définir vos règles génériques de page / sous-page. J'ai perdu pas mal de temps avec celui-là et je pense que c'est la principale chose qui m'a fait ne pas comprendre pourquoi les règles ne fonctionnaient pas.
Voici les 3 règles qui fonctionnent à travers tous mes besoins. La règle Page / Sous-page a été combinée en une seule.
// Custom Post Archive
add_rewrite_rule(
'^foo/example_type/?$',
'index.php?param=foo&post_type=example_type',
'top'
);
// Custom Post Individual
add_rewrite_rule(
'^foo/example_type/([^/]*)/?$',
'index.php?param=foo&example_type=$matches[1]',
'top'
);
// Pages, Top-Level and Sub-Pages
// This MUST be placed in the code AFTER custom post add_rewrite_rule
add_rewrite_rule(
'^foo/(.+)/?$',
'index.php?param=foo&pagename=$matches[1]',
'top'
);
De plus, j'ai créé une boucle pour ajouter plusieurs règles de type de publication personnalisées. N'oubliez pas que vous devez définir les règles de type de publication personnalisées add_rewrite_rule AVANT de définir vos règles génériques de page / sous-page.
$custom_types = array('example_type', 'projects', 'people');
foreach($custom_types as $type) {
// Custom Post Archive
add_rewrite_rule(
'^foo/'.$type.'/?$',
'index.php?param=foo&post_type='.$type,
'top'
);
// Custom Post Individual
add_rewrite_rule(
'^foo/'.$type.'/([^/]*)/?$',
'index.php?param=foo&'.$type.'=$matches[1]',
'top'
);
}
L' analyseur de réécriture que Milo a transmis a été très utile pour mieux comprendre comment Wordpress interroge les pages / publications.
pagetype de publication ou n'importe quelle page? qu'en est-il des pages parent / enfant dans la hiérarchie?