Como Reescrever URLs no WordPress 4.4

Neste artigo, você descobrirá como usar a API Rewrite Rule do WordPress para criar seus próprios links exclusivos em seu site e deixar as urls amigáveis.

Neste artigo, você descobrirá como usar  a API Rewrite Rule do WordPress para criar seus próprios links exclusivos para o seu site. O WordPress já usa essa funcionalidade quando você seleciona uma nova estrutura permalink para reescrever urls no WordPress.

O que é Rewriting?

Reescrita de URL é quando você muda o conteúdo que é exibido pelo servidor. Normalmente, quando você digitar uma URL no servidor web simplesmente irá procurar todos os arquivos nesse local. Mas com o Rewriting você pode mostrar a mesma URL, mas mudando no back-end onde o servidor vai procurar o conteúdo. Portanto, podemos ter uma URL de /seu-site-1/, mas dizer ao servidor para exibir o conteúdo que está localizado em /seu-site-1/wp-content/themes/seu-tema/index.php.

Como o WordPress usa o Rewrite Rule para personalizar suas urls?

Quando você for em “Configurações –> Permalinks”, você terá de escolher como quer que suas URLs apareçam no WordPress. Tem muitas opções diferentes para escolher. O padrão que o WordPress vai usar é “?p={post_id}”, este é o valor que é armazenado na tabela wp_posts em que a API de reescrita de urls vai escrever. Quando você selecionar uma nova estrutura permalink, irá armazená-las na tabela de wp_options. Isto significa que nós podemos ter URLs com apenas o título do post e o WordPress vai saber que será preciso procurar na coluna post_name para encontrar o post correto para exibir.

wordpress-permalinks

Alterando as urls você terá resultados como este a seguir.

http://www.seu-site.com/?p=1
para
http://www.seu-site.com/titulo-do-post

Existem dois principais benefícios de mudar a estrutura de URL. Uma delas é por razões de SEO, com palavras-chave na URL para dar um impulso nos rankings. Outra vantagem é que é mais amigável para o usuário clicar em um link com palavras-chave na URL.

E como o WordPress faz isso?

Quando você alterar a estrutura permalink do WordPress ele vai fazer uma mudança no arquivo .htaccess que irá enviar todo o tráfego do site para o arquivo index.php. Se você abrir o seu arquivo .htaccess você vai ver algo semelhante a isto.

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

E no arquivo index.php é onde serão feitas algumas verificações para saber qual é o arquivo correto a ser entregue ao usuário. Isso funcionará muito bem se você quiser usar as configurações padrão em seu site. Caso você decida criar suas próprias regras personalizadas você precisa usar a função add_rewrite_rules() para criar um novo regex padrão de como reescrever suas páginas .

Crie suas próprias regras de reescrita de url no WordPress

function custom_rewrite_basic()
{
add_rewrite_rule(
‘^leaf/([0-9]+)/?’,
‘index.php?page_id=$matches[1]’,
‘top’
);
}
add_action( ‘init’,  ‘custom_rewrite_basic’ );

NOTA: Quando você utilizar $matches[] para recuperar os valores de uma URL correspondente, os dados de captura de grupo começa em 1, não 0.

IMPORTANTE: Não se esqueça de limpar e regenerar os permalinks depois de modificar as regras de reescrita. Caso contrário, às vezes você poderá  ter problemas no WordPress retornando uma página 404 para seus posts e isso porque você esqueceu de atualizar os permalinks. Na administração do WordPress, selecione Configurações -> Permalinks e apenas clique em salvar alterações sem quaisquer alterações. Agora, você pode acessar a mesma página que http://meu-site.com/leaf/95.

Você pode saber mais acessando o link a seguir. https://codex.wordpress.org/Rewrite_API/add_rewrite_rule

Saiba tudo sobre a versão 4.4 do WordPress

  • Rodrigo Vieira Eufrasio da Silva

    Muito bom seu artigo Victor, concordo realmente contigo sobre os dois principais benefícios da escritas de URls, pois iss é fundamental dentro dos processos de um projeto em WordPress.