DEV Community

Henrique Marques Fernandes
Henrique Marques Fernandes

Posted on • Originally published at marquesfernandes.com on

Como alterar a estrutura da URL no WordPress e Redirecionar os Links Antigos

Recentemente precisei alterar a estrutura das minhas urls no WordPress, o link estava configurado para ser na raiz do meu site e eu precisava que o novo formato tivesse a categoria. A estrutura do link permanente estava /%postname%/ e agora no novo formato seria /%category%/%postman%/. Um exemplo prático:

Se você apenas alterar a estrutura e não redirecionar, todos os links antigos vão direcionar para uma página de Erro 404 – Página Não Encontrada. Então como fazer essa alteração sem quebrar os links já criados e indexados no Google?

O que precisamos fazer é tentar capturar a URL que causaria o erro 404 e tentar localizar o novo link permanente da postagem. Se nenhum link for encontrado, ai sim exibiremos a página de não encontrado. O método é bem simples, desde que na sua URL antiga exista algo que possamos utilizar para buscar o link novo, como, por exemplo, o /%postname%/, poderemos encontrar e redirecionar para a página correta.

Para isso adicionaremos o seguinte script no arquivo functions.php do tema ativo do WordPress:

add\_action( 'template\_redirect', 'maybe\_redirect\_404\_old\_permalink' );function maybe\_redirect\_404\_old\_permalink() { // Apenas executa essa função se for uma página de 404 if( ! is\_404() ) { return; } // Truque para pegar a URL completa $url = add\_query\_arg( '', '' ); // Pegamos a parte referente ao %postname% $parts = explode( '/', $url ); $parts = array\_filter( $parts ); $size = count( $parts ); $maybe\_slug = $parts[$size]; // Tentamos localizar o novo link no banco de dados $args = array( 'name' => $maybe\_slug, 'post\_type' => 'post', 'post\_status' => 'publish', 'numberposts' => 1, ); $posts = get\_posts( $args ); // Encontramos o post if( $posts && ! empty( $posts[0]->ID ) ) { $post\_id = $posts[0]->ID; $post\_url = get\_permalink( $post\_id ); // Redirecionamos para a nova URL com o status de redirecionamento permanente 301 if( $post\_url ) { wp\_safe\_redirect( $post\_url, 301 ); } } // Se chegar até aqui é porque nenhum post realmente foi encontrado// e a página de 404 será exibida}
Enter fullscreen mode Exit fullscreen mode

Agradecimentos ao Ben Lobaugh, criador original dessa solução!

O post Como alterar a estrutura da URL no WordPress e Redirecionar os Links Antigos apareceu primeiro em Henrique Marques Fernandes.

Heroku

Build apps, not infrastructure.

Dealing with servers, hardware, and infrastructure can take up your valuable time. Discover the benefits of Heroku, the PaaS of choice for developers since 2007.

Visit Site

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay