Ok, obtuve ejemplos de trabajo para los 3 tipos de solicitudes. Tomó un montón de experimentar y perder el tiempo para que funcionen. Supongo que Milo es bueno para incitar a las personas a responder sus propias preguntas.
Después de innumerables cambios y de actualizar los enlaces permanentes, me di cuenta de que era mucho más fácil averiguar las direcciones URL fuera de add_rewrite_url y, una vez que funcionaban, definía la reescritura. Ejemplo de ser index.php?param=foo&post_type=example_type.
Otra cosa obvia, pero agregarlo aquí para que pueda ayudar a alguien más. Debe definir el tipo de publicación personalizada add_rewrite_rule rules ANTES de definir sus reglas de comodín de página / subpágina. Perdí bastante tiempo con eso y creo que es lo principal que me hacía no entender por qué las reglas no funcionaban.
Aquí están las 3 reglas que funcionan en todas mis necesidades. La regla Página / Subpágina se combinó en una sola.
// 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'
);
Además, lo que he hecho es configurar un bucle para agregar múltiples reglas de tipo de publicación personalizada. Recuerde, debe definir el tipo de publicación personalizada add_rewrite_rule rules ANTES de definir sus reglas comodín de página / subpágina.
$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'
);
}
El analizador de reescritura que Milo transmitió fue muy útil al tratar de comprender mejor cómo Wordpress consulta las páginas / publicaciones.
pagetipo de publicación o cualquier página? ¿Qué pasa con las páginas padre / hijo en jerarquía?