O padrão que o WordPress usa para reconhecer as páginas é (.+?)
, que corresponderá a qualquer coisa, mas não é guloso , então permite que você coloque algo no final. O código a seguir funciona para mim no WordPress 3.0.1: ele coloca o padrão extra no penúltimo lugar da lista, porque o padrão final é tão genérico que corresponderá a cada 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;
}
Esteja ciente de que as páginas, como qualquer postagem, também podem ser divididas em várias páginas com o <!--nextpage-->
snippet, e a URL normal para isso é /pagename/2/
, o que pode ser confuso quando você também tem /pagename/3/jan/fabry/
, onde o 3
é um ID. Você pode alterar o padrão para incluir um número de página opcional no final, então isso pode se tornar /pagename/3/jan/fabry/2/
, em que o% final 2
é o número da página e o primeiro 3
é o ID.
Se você estiver alterando as regras de regravação, recomendo minha reescrita plugin do analisador (logo no repositório, mas obtenha a versão atual via Dropbox ), ajuda você a depurar essas coisas.