Ok, ich habe Arbeitsbeispiele für alle drei Arten von Anfragen erhalten. Es dauerte eine Menge Experimentieren und Herumspielen, um sie zum Laufen zu bringen. Ich denke, Milo ist gut darin, Leute dazu zu bringen, ihre eigenen Fragen zu beantworten.
Nach unzähligen Änderungen und dem Aktualisieren der Permalinks wurde mir klar, dass es viel einfacher war, die URLs außerhalb von add_rewrite_url herauszufinden, und sobald sie funktionierten, definieren Sie das Umschreiben. Beispiel dafür index.php?param=foo&post_type=example_type
.
Eine andere offensichtliche Sache, aber fügen Sie es hier hinzu, damit es jemand anderem helfen kann. Sie müssen die Regeln für den benutzerdefinierten Beitragstyp add_rewrite_rule definieren, bevor Sie die Platzhalterregeln für Seiten / Unterseiten definieren. Ich habe ziemlich viel Zeit damit verschwendet und denke, es ist die Hauptsache, die mich dazu gebracht hat, nicht zu verstehen, warum die Regeln nicht funktionierten.
Hier sind die 3 Regeln, die für alle meine Bedürfnisse gelten. Die Seiten- / Unterseitenregel wurde zu einer einzigen zusammengefasst.
// 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'
);
Außerdem habe ich eine Schleife eingerichtet, um mehrere benutzerdefinierte Regeln für Post-Typen hinzuzufügen. Denken Sie daran, dass Sie die benutzerdefinierten Regeln für den Beitragstyp add_rewrite_rule definieren müssen, bevor Sie die Platzhalterregeln für Seiten / Unterseiten definieren.
$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'
);
}
Der Rewrite Analyzer, den Milo weitergegeben hat, war sehr hilfreich, um besser zu verstehen, wie Wordpress Seiten / Beiträge abfragt.
page
Beitragstyp oder nur eine Seite? Was ist mit übergeordneten / untergeordneten Seiten in der Hierarchie?