Antes de tudo, use add_rewrite_rule()
ao invés de mexer diretamente com $wp_rewrite->rules
, se possível. O último é um pouco baixo nível.
Em relação ao 'url not updating' - este não é o trabalho das regras de reescrita. Eles simplesmente apontam URLs para seu conteúdo, mas não atualizam a barra de endereços do usuário.
O arquivo responsável por isso é /wp-includes/canonical.php . Em particular, a função redirect_canonical()
conectada a template_redirect
.
Este redirect_canonical()
tem seu próprio filtro:
add_filter('redirect_canonical', 'wpse50912_redirect_canonical',10,2)
function wpse50912_redirect_canonical($redirect_url, $requested_url){
//Do stuff - determine if url is requesting album/track and check
//If it is, check it is using the new structure.
//Return the url you want in the address bar.
return $redirect_url;
}