Como criar rotas de URL personalizadas?

42

Eu tenho uma exigência muito peculiar, espero poder explicá-la sem ser muito confusa. Eu criei um modelo de página onde eu listo algumas propriedades que recebo de um arquivo XML externo, até agora sem problemas, digamos que o URL é assim: enlace

Cada propriedade tem um link que deve redirecionar o usuário para uma página "Propriedade única" que exibe mais informações sobre ele, o que eu queria saber é se há uma maneira de tornar o link assim enlace ? Onde "123" seria o id da propriedade, basicamente se eu tenho o url como propriedades / some_id eu quero ser capaz de carregar um arquivo de visão (como os arquivos single.php ou page.php), mas específico para esta condição de URL .

Isso é possível? Obrigado antecipadamente!

    
por Javier Villanueva 20.08.2011 / 00:24
fonte

2 respostas

50

Adicione isso ao functions.php do seu tema, ou coloque-o em um plugin .

add_action( 'init', 'wpse26388_rewrites_init' );
function wpse26388_rewrites_init(){
    add_rewrite_rule(
        'properties/([0-9]+)/?$',
        'index.php?pagename=properties&property_id=$matches[1]',
        'top' );
}

add_filter( 'query_vars', 'wpse26388_query_vars' );
function wpse26388_query_vars( $query_vars ){
    $query_vars[] = 'property_id';
    return $query_vars;
}

Isso adiciona uma regra de reescrita que direciona solicitações para /properties/ com qualquer combinação de números após o nome da página properties , com a consulta var property_id set. Apenas certifique-se de visitar a página de configurações de permalinks e salvar para liberar regras de regravação, para que essa nova regra seja incluída.

No seu modelo page-properties.php , get_query_var('property_id') retornará o ID da propriedade, se estiver definido, se não for, mostre a página de propriedades padrão.

    
por Milo 20.08.2011 / 01:44
fonte
8

Outra maneira de fazer isso:

add_action('init', function() {
    add_rewrite_rule( '^properties/([0-9]+)/?',
                      'index.php?pagename=properties&property_id=$matches[1]',
                      'top' );
}, 10, 0);

add_action('init', function() {
    add_rewrite_tag( '%property_id%', '([^&]+)' );
}, 10, 0);

Regra da regravação do Codex / add rewrite

API Codex Rewrite / adicionar tag de reescrita

    
por Christian Lescuyer 21.05.2017 / 11:24
fonte