El patrón que WordPress usa para reconocer páginas es (.+?)
, que coincidirá con cualquier cosa, pero no es codicioso , por lo que le permite poner algo al final. El siguiente código me funciona en WordPress 3.0.1: coloca el patrón adicional en el segundo lugar de la lista, porque el patrón final es tan genérico que coincidirá con todas las URL:
add_filter( 'page_rewrite_rules', 'wpse7243_page_rewrite_rules' );
function wpse7243_page_rewrite_rules( $rewrite_rules )
{
// The most generic page rewrite rule is at end of the array
// We place our rule one before that
end( $rewrite_rules );
$last_pattern = key( $rewrite_rules );
$last_replacement = array_pop( $rewrite_rules );
$rewrite_rules += array(
'(.+?)/([0-9]+)/([^/]+)/([^/]+)/?$' => 'index.php?pagename=$matches[1]&id=$matches[2]&fname=$matches[3]&lname=$matches[4]',
$last_pattern => $last_replacement,
);
return $rewrite_rules;
}
Tenga en cuenta que las páginas, como cualquier publicación, también se pueden dividir en varias páginas con el fragmento <!--nextpage-->
, y la URL normal es /pagename/2/
, lo que puede resultar confuso cuando también tienen /pagename/3/jan/fabry/
donde 3
es una ID. Puede cambiar el patrón para incluir un número de página opcional al final, por lo que puede convertirse en /pagename/3/jan/fabry/2/
donde el final 2
es el número de la página, y el primer 3
es el ID.
Si está cambiando las reglas de reescritura, recomiendo mi reescritura complemento analizador (pronto en el repositorio, pero obtenga la versión actual a través de Dropbox ), te ayuda a depurar estas cosas.