He escrito reglas de Reescritura para mis tipos de publicaciones personalizadas. funcionan bien, excepto que WP no actualiza la url en el Agente de usuario cuando el redirect_url no coincide con el required_url.
todo lo demás funciona muy bien, incluyendo mis permastructs personalizados ('post_type_link') y las opciones de plantillas personalizadas ('single-template').
mis reglas:
// custom URL rewrite for Album posts
add_action( 'init', 'gregory_rewrite_album_link' );
function gregory_rewrite_album_link()
{
// album--%album_slug%/ OR album/%album_slug%/
// preferred permastruct: album--%album_slug%/
add_rewrite_rule(
'^album(/|--)([^/]+)/?$',
'index.php?post_type=gregory-cpt-album&name=$matches[2]',
'top' );
}
// custom URL rewrite for Track posts
add_action( 'init', 'gregory_rewrite_track_link' );
function gregory_rewrite_track_link()
{
// accepts and rewrites the following permutations:
// where album would be: album--%album_slug% OR album/%album_slug%
// where track would be: track--%track_slug% OR track/%track_slug%
// preferred permastruct: album--%album_slug%/track--%track_slug%/
add_rewrite_rule(
'^(album(/|--)[^/]+/)?track(/|--)([^/]+)/?$',
'index.php?post_type=gregory-cpt-track&name=$matches[4]',
'top' );
}
Me preguntaba cuáles eran las diferencias entre usar add_rewrite_rule (), agregar reglas directamente a $ wp_rewrite- > rules, y enganchar a rewrite_rules_array? ¿hay diferencias? ¿Una de las alternativas obligaría a WP a actualizar la url en el Agente de usuario cuando el enlace permanente de la publicación de destino difería de la url solicitada?
un ejemplo de la url que no se actualiza ... las publicaciones del álbum y de la pista están vinculadas por un término de taxonomía mutua. el enlace en 'post_type_link' para pistas encuentra el álbum vinculado e inserta su barra en el enlace permanente. las reglas de Reescritura anteriores aseguran que funcionen tanto los permastructs nuevos como los tradicionales, pero al solicitar esta url /album/serenity/track--beetle-attack/
encontrará la publicación pero no actualizará la url a /album--serenity/track--beetle-attack/
.
es poco probable que alguien use los permastructs tradicionales porque no los anunciaré ni los usaré en mi sitio, pero sería un buen extra ver que las URL se actualicen en el Agente de Usuario, si es posible.
saludos,
Gregory