8 de julho de 2012  //  1 Comentário  //  Categorias: Tutoriais, WordPress

WP_Rewrite sem mistérios para WordPress



O WordPress conta com várias ferramentas para permitir a personalização de posts e páginas. Aprenda agora como criar URLs amigáveis para carregar arquivos “extra-tema”.

WP Rewrite

A classe WP Rewrite é responsável por gerenciar todas as rotas do WordPress.

Nesse tutorial vamos criar um regra rewrite para a URL http://meusite.com/contato. Desta forma, vamos redirecionar o processamento para o arquivo tpl-contato.php do nosso tema. Vamos lá!

Definindo

Primeiramente vamos criar uma variável pública para armazenar todas as nossas regras.

Adcione ao arquivos functions.php do seu tema:

Note que a chave informada é uma expressão regular que aponta para o arquivo index.php, passando o parâmetro custom_page com o valor contato.

Para deixar mais claro o que é possível fazer, vejamos um exemplo mais complexo:

No exemplo a cima podemos acessar a URL http://meusite.com/livros/autor/pedro-eslner, a qual passará o valor pedro-elsner no parâmetro autor. =)

Carregando

Uma vez definidas, vamos carregar as regras no evento wp_loaded.

Adicione ao functions.php:

Nossa função basicamente procura nas regras do WordPress pelas nossas registras na variável $my_rewrite_rules_array. Caso não encontro, executa a função WP_Rewrite::flush_rules() responsável por atualizar as regras dos links permanentes.

Ao executar essa função o evento rewrite_rules_array é chamado, então, vamos retornar nossas regras aqui:

Adicione ao functions.php:

Parâmetros

Agora, vamos habilitar nosso parâmetro custom_page para que possamos pega-lo pela função get_query_var().

Adicione ao functions.php:

Finalizando

Bom, agora que configuramos tudo só nos resta interceptar o carregamento do WordPress e direcionar o processamento da nossa URL http://meusite.com/contato para o arquivo tpl-contato.php do nosso tema.

Adicione ao functions.php:

Conclusão

Muito simples né? =)
Qualquer dúvida é só comentar!

Até a próxima =D

Quer copiar esse post no seu site? Você pode!

Segundo a licença da Creative Commons 3.0 (CC BY SA 3.0) você pode copiar e distribuir esse conteúdo desde que faça menção ao autor original, para isso é só copiar esse código no final do artigo quando for publicá-lo em seu site:

<p>Artigo originalmente publicado em <em>8 de julho de 2012</em> por <strong><a href="http://pedroelsner.com/" title="Pedro Elsner, Profissional de TI - São Paulo">Pedro Elsner</a></strong>: <a href="http://pedroelsner.com/2012/07/rewrite-sem-misterios-no-wordpress/" title="WP_Rewrite sem mistérios para WordPress">WP_Rewrite sem mistérios para WordPress</a></p>
A não menção ao autor original da obra implicará em cópia e/ou distribuição ilegal de propriedade intelectual, o que é crime segundo a Lei n.º 9.610.
  • Tiago Silva

    Bom dia Pedro!

    Só um pergunta, por que tenho que criar uma página diferente???

    Uma outra situação: Eu tenho dois links na mesma página e precisaria transformá-lo para urls amigáveis. Tem com fazer com dois links???
    Algo tipo:
    “contato$” => ‘index.php?custom_page=contato’
    “eventos$” => ‘index.php?ano=2015’

    Desde já, muito obrigado!