Um permalink é o link que é usado para acessar um conteúdo específico em seu site.

Por exemplo, a página inicial em Kinsta está em https://kinsta.com/, nosso blog está em https://kinsta.com/blog/ e um único post usa um link como https://kinsta.com/blog/wordpress-widgets/.

Permalinks também são usados para páginas de arquivo, páginas estáticas e qualquer conteúdo em seu site que precise de sua própria URL.

Neste post, vamos mostrar como funcionam os permalinks, como otimizá-los para o seu site, e como configurá-los através da sua tela de configurações e escrevendo algum código.

O que são WordPress Permalinks?

Como definido no código oficial do WordPress:

“WordPress Permalinks são as URLs permanentes para seus artigos weblog individuais, assim como categorias e outras listas de artigos weblog.”

Cada página do seu site (incluindo posts, páginas, páginas de arquivo e outras páginas como a 404) terá o seu próprio permalink.

Assim, por exemplo, sua página inicial estará em seu site.com, enquanto seu blog está em yoursite.com/blog.

Se você tem uma categoria ‘destaque’ em seu blog, isso pode estar em uma de várias URLs:

  • yoursite.com/category/featured
  • yoursite.com/blog/featured or just
  • yoursite.com/featured.

Os posts individuais também têm seu próprio permalink. Nos arquivos de template do seu tema, a tag template the_permalink() será usada para pegar a URL de um post e criar um link clicável a partir dela.

O WordPress usa isso para buscar o permalink único para o post individual e produzi-lo dentro de um elemento <a> para que ele possa ser usado como um link na listagem de posts do seu blog.

A beleza de ter essa tag de template é que você só precisa usar aquele código para buscar o link para qualquer post do seu site, e você não precisa codificar nenhum link para o seu tema.

A Diferença entre Permalinks, Dicas e Links

Neste post, estaremos focando em permalinks em detalhes, mas também estaremos olhando para slug. Então qual é a diferença entre elas?

O permalink é o link completo para um post. Então, o link que dei antes para um post da Kinsta em widgets é https://kinsta.com/blog/wordpress-widgets/.

Slug é a parte final desse permalink, e é única para esse post. Neste caso, são wordpress-widgets.

Essa slug é gerada automaticamente para você com base no título de um post. E se você quiser criar uma slug manualmente para uma postagem, você pode. Eu vou mostrar como (e porque você pode querer) mais tarde neste post.

Como são criados os Permalinks do WordPress

Em um site estático, uma URL identifica um recurso pelo seu nome e caminho de diretório, como mostrado no exemplo a seguir:

https://example.com/path/to/resource/wordpress-permalinks.html

Para termos URLs bem estruturadas, só precisamos de um sistema de arquivos bem estruturado e recursos devidamente nomeados.

Mas a web é dinâmica, e nós estamos acostumados a gerenciar sites usando CMSs controlados por banco de dados, ou seja, URLs conterão uma série de parâmetros cujos valores determinam a consulta a ser executada contra o banco de dados.

Considere o seguinte exemplo:

https://example.com/?key1=val1&key2=val2

Nesta URL você vai notar um separador (o ponto de interrogação), e um conjunto de pares chave/valor (separados por amperesand) que constituem a cadeia de consulta. A URL não atende aos requisitos de usabilidade e acessibilidade e deve ser convertida em um permalink mais significativo e amigável ao SEO.

A forma como essas URLs “feias” são convertidas em permalinks otimizados depende do seu servidor web. Se você é um usuário Apache, você terá que adicionar um conjunto de diretivas de reescrita no arquivo .htaccess da pasta raiz. Se você é um usuário Nginx, você adicionaria uma diretiva try_files no arquivo de configuração principal.

Mas não se preocupe! Na maioria das vezes você não será obrigado a configurar o webserver linha por linha, pois o WordPress fará isso por você.

Como um usuário administrador, você pode definir regras de reescrita personalizadas de forma rápida e fácil a partir do painel de administração. Usuários avançados e desenvolvedores podem obter ainda mais graças à API de reescrita do WordPress, que fornece funções e ganchos que levam a personalização permalink a um nível superior.

Uma Visão Geral das Consultas do WordPress

Com o objetivo específico de construir a consulta, executá-la e armazenar resultados do banco de dados do WordPress, o WordPress fornece a classe WP_Query. Graças a esta classe não precisamos nos preocupar com a consulta, pois o WP_Query tratará automaticamente da requisição, constrói a consulta e a executa. Então, de acordo com a hierarquia de modelos, o WordPress retornará o recurso solicitado.

Fora da caixa, o WordPress admite solicitações de posts individuais, páginas, tipos de posts, bem como de vários arquivos ordenados por categoria, tag, data, autor, e muito mais.

Além disso, se as funcionalidades padrão não forem suficientes, os desenvolvedores podem construir consultas personalizadas criando novas instâncias da classe WP_Query (o objeto da consulta) ou passando parâmetros específicos para uma instância existente da consulta antes de sua execução.

Os parâmetros da consulta são chamados variáveis de consulta e são divididos em três grupos.

Vars de Consulta Pública

Essas variáveis são públicas no sentido em que estão disponíveis para serem utilizadas em solicitações públicas (ou seja, as URLs). Graças a essas variáveis, podemos pedir postagens por autores:

?author=12?
author_name=mickey

Por categoria ou tag:

?cat=4,5,6
?category_name=CMS
?tag=wordpress

Por data e hora:

?monthnum=201601
?year=2015?w=13
?day=31

Pelo correio ou por página:

?p=123
?name=hello-world
?page_id=234

E muito mais.

Variáveis de Consulta Privada

Essas variáveis não devem ser adicionadas a cadeias de consulta de URLs. Elas podem ser usadas para afetar consultas apenas dentro de um script (um plugin ou um arquivo functions.php de um tema).

A seqüência de consulta a seguir não retornaria o resultado esperado:

?meta_key=city&meta_value=London

meta_key e meta_value são variáveis de consulta privada que não devem ser definidas em strings de consulta. Elas devem ser passadas para uma instância do objeto da consulta, como mostrarei mais tarde.

Veja a lista completa de variáveis de consulta pública e privada no Codex.

Variáveis de Consulta Personalizadas

Essas variáveis definidas pelo usuário podem ser passadas através de strings de consulta URL muito parecidas com as vars de consulta pública. A principal diferença entre variáveis públicas e variáveis personalizadas é que o WordPress não vai lidar com variáveis personalizadas por si só, e devemos obter seus valores a partir de um plugin para personalizar as consultas.

Dito isto, vamos voltar aos permalinks.

Permalinks do WordPress ruins e lista de consultas

Permalinks ruins mostram a query string, ou seja, a parte da URL contendo um conjunto de variáveis da query (a query string) que irá determinar o recurso retornado.

Configuração simples na tela de configurações de Permalinks
Configuração simples na tela de configurações de Permalinks

Como exemplo, considere as seguintes URLs:

https://example.com/?cat=5
https://example.com/?cat=5,7,9

Em resposta a essas URLs, o WordPress retornaria o arquivo de posts pertencentes às categorias especificadas.

Nós não estamos limitados a apenas um parâmetro por URL. Nos exemplos a seguir, estamos construindo consultas mais complexas:

?author_name=lucy&category_name=WebDev?tag=wordpress&m=201606

Na primeira query string, nome_do_autor e nome_da_categoria irão requerer todos os posts do autor especificado na categoria WebDev. Na segunda query string, tag e m irá requerer todos os posts marcados como “wordpress” e publicados em junho de 2016.

Como você pode ver, podemos definir mais de uma variável de consulta e forçar o WordPress a executar consultas avançadas apenas adicionando os pares key=value apropriados para consultar strings.

Bastante Permalinks: Uma Melhor Alternativa

Ao habilitar os Pretty Permalinks nós definimos uma estrutura URL utilizável, acessível e amigável ao SEO. Vamos comparar as seguintes URLs:

https://example.com/?p=123
https://example.com/wordpress-permalinks/

Neste exemplo, o permalink ruim mostra a variável p e seu valor (o ID do post), enquanto a bela URL mostra a slug do post.

O WordPress fornece quatro formatos Pretty Permalink que podemos escolher na Tela de Configurações Permalink, como mostrado na imagem abaixo.

Bastante permalinks em configurações Permalinks
Bastante permalinks em configurações Permalinks

Mas você não está limitado aos formatos padrão, pois o WordPress permite que você personalize o formato permalink, definindo uma ou mais tags de estrutura.

Opção de estrutura personalizada
Opção de estrutura personalizada

Mostrarei isto em detalhes mais tarde neste post.

Por que as ligações de acesso livre são importantes?

O uso de links permanentes para o seu site WordPress terá dois benefícios: SEO e Experiência do Usuário.

Por que isso? Os sites de busca usam sua URL como indicação do que se trata o post. Se o conteúdo do permalink estiver relacionado com o conteúdo do seu post, isso ajudará os mecanismos de busca a determinar sobre o que é o seu post e que é legitimamente sobre o que ele afirma ser.

Para o UX, links permalinks bonitos são melhores porque facilitam a lembrança e o uso de URLs no seu site. Ninguém vai lembrar a URL da sua página de contato se for o yoursite.com/?p=456. Mas eles vão se lembrar do yoursite.com/contact.

Permalinks, Slugs, e SEO

The post slug is the very last part of the URL for a post. If you’ve configured WordPress Permalinks settings so that the post name is used, the slug for a post called ‘how to create pretty permalinks’ will be automatically generated as yoursite.com/how-to-create-pretty-permalinks/.

A slug do post é a última parte da URL de um post. Se você configurou as configurações de Permalinks do WordPress para que o nome do post seja usado, a slug para um post chamado ‘como criar lindos permalinks’ será automaticamente gerada como yoursite.com/how-to-create-permalinks/.

Isso é uma slug decente. Ela diz aos usuários sobre o que é o post e para os mecanismos de busca ela contém ‘lindas ligações permanentes’, que pode ser a palavra-chave que você está alvejando.

Mas pode ser melhorado.

Suas slug devem ser longas o suficiente para incluir as palavras-chave que você está buscando, mas curtas o suficiente para serem memoráveis para os usuários e para não confundir os mecanismos de busca com muitas palavras desnecessárias (aqui está como criar permalinks SEO-friendly no WordPress).

Então, um post chamado “como criar links permanentes bonitos” pode ser melhor com uma rodada de pretty-permalinks dando a você o yoursite.com/pretty-permalinks/. Ou se você tiver várias postagens em links permanentes bonitos e quiser dar a esta uma tag específica relacionada ao fato de ser um guia de como criar links permanentes, você pode usar create-pretty-permalinks, dando a você o yoursite.com/create-pretty-permalinks.

Ou para levar as coisas mais longe você poderia melhorar ainda mais a SEO incluindo ‘WordPress’: example.com/create-wordpress-pretty-permalinks.

Quando as pessoas estão olhando para seu link em um resultado de busca, você também não quer que o resultado da busca seja tão longo que não possa ser lido. Abaixo estão dois resultados que recebo do blog Kinsta quando pesquiso no Google ‘wordpress permalinks’.

Resultado do Google - WordPress permalinks
Resultado do Google – WordPress permalinks

Ambas possuem caracóis bem otimizados. A primeira é wordpress-premalinks-url-rewriting, indicando que é dirigida a essas palavras-chave, e a segunda é wordpress-slug, que é ainda mais focada.

Estas slugs não desperdiçam palavras. Elas dizem aos motores de busca sobre o que é o post e nada mais.

Você pode otimizar suas slug para SEO primeiro selecionando Nome do post na tela de configurações de Permalinks e depois editando manualmente a slug para cada post quando você escrevê-lo.

Permalinks, Slug e UX

O uso de links permanentes e o uso de balas curtas e memoráveis também lhe trarão benefícios UX.

De acordo com um post de 1999 de Jacob Nielsen, um site utilizável requer:

  • um nome de domínio que é fácil de lembrar e fácil de soletrar.
  • URLs curtas.
  • URLs fáceis de digitar.
  • URLs que visualizam a estrutura do site.
  • URLs que são “hackeáveis” para permitir que os usuários passem para níveis mais altos de arquitetura de informação através de hacking no final da URL.
  • URLs persistentes que não mudam.

Uma URL nunca deve mudar, pois ela pode ser armazenada e compartilhada de várias maneiras. É por isso que os chamamos de permalinks. Além disso, uma URL deve ser semântica, no sentido de ser imediata e intuitivamente significativa para usuários não-especializados.

Portanto, embora seja possível mudar o permalink de um post depois de publicá-lo, não é uma boa idéia. Isso porque o permalink original pode já ter sido compartilhado. Se você precisar mudá-lo, não deixe de seguir as melhores práticas de redirecionamento do WordPress.

Como Alterar Configurações de Permalink no WordPress

No WordPress, você pode alterar os permalinks de várias maneiras:

  • Você pode editar a tela de configurações de Permalinks para ativar os lindos Permalinks – algo que você deve fazer assim que configurar o seu site.
  • Você pode editar a estrutura permalink para tags e categorias na tela Permalinks.
  • Você pode editar slug para postagens individuais quando estiver criando e editando-as.
  • Você pode especificar a estrutura de links para tipos de posts personalizados ao registrá-los, optando por usar o padrão ou anulá-lo.
  • Você pode escrever um plugin para alterar a forma como os permalinks são estruturados.
  • Você pode usar redirecionamentos para obter um permalink desatualizado, apontando para um novo.

Vamos dar uma olhada em cada uma delas.

Edição de configurações gerais de Permalink

A tela de configurações de permalinks é o primeiro lugar para configurar seus permalinks. Acesse-a através de Configurações > Permalinks.

Tela de configurações Permalink
Tela de configurações Permalink

Configurações Comuns

A primeira seção trata das configurações para os posts individuais. As opções são:

  • Simples: este utiliza o Post ID para o link. Vai fazer sentido para os navegadores, mas não vai significar muito para os seres humanos ou para os mecanismos de busca. Parece com isto: example.com/?p=123.
  • Dia e nome: Inclui a data completa em que o post foi publicado, bem como seu nome (ou mais precisamente sua slug). Assim se parece: example.com/2020/06/01/my-post/.
  • Mês e nome: Esta é uma versão mais curta de dia e nome, com apenas o mês e ano e não o dia: example.com/2020/06/my-post/.
  • Numérico: Como a opção simples, esta usa a identificação do post e não é muito amigável: example.com/archives/123.
  • Post name: Esta opção não inclui nenhuma data ou post IDs, mas apenas usa a slug: example.com/my-post/.
  • Estrutura personalizada: Aqui você pode criar sua própria estrutura personalizada. Use tags para buscar informações baseadas nos dados dos posts, e texto estático para adicionar algo que não irá mudar entre os posts.

Estas tags são palavras-chave específicas envolvidas dentro do caractere %. O WordPress fornece as seguintes tags:

  • %year% – o ano da pós-publicação (quatro dígitos).
  • %monthnum% – o mês de publicação (dois dígitos).
  • %day% – o dia da publicação (dois dígitos).
  • %hour% – a hora da publicação (dois dígitos).
  • %minute% – a ata de publicação (dois dígitos).
  • %second% – o segundo da publicação (dois dígitos).
  • %post_id% – o ID do post único (inteiro).
  • %postname% – a slug do poste (ou seja, o fio higienizado que representa o título do poste).
  • %category% – a slug da categoria.
  • %author% – a slug do autor.

Tente checar o botão de rádio Estrutura personalizada e adicionar uma das seguintes cordas no campo de texto:

  • /%author%/%postname%/
  • /%year%/%postname%/
  • /%category%/%postname%/

Qualquer uma dessas cordas gera uma ligação permanente diferente com valores semânticos específicos, como mostrado abaixo:

example.com/rachelmccollin/wordpress-permalinks/
example.com/2020/wordpress-permalinks/
example.com/CMS/wordpress-permalinks/

No primeiro exemplo, a URL resultante destaca o autor do post. Os outros dois formatos nos informam o ano de publicação e a categoria do post, respectivamente. Cabe a você escolher o formato que melhor lhe convier.

Uma vez selecionada a opção desejada, vá para a seção Opcional ou clique em Salvar alterações para salvar suas configurações.

Configurações Opcionais de Permalink

Assim como as configurações para seus posts individuais, a tela de configurações Permalinks também permite que você defina uma estrutura personalizada para seus arquivos de categorias e tags.

Se você não fizer isso, o padrão é incluir /category/category-slug/ no final do permalink. Então se você tem uma categoria de ‘destaque’, sua página de arquivo estaria em yoursite.com/category/featured.

Configurações opcionais de permalink
Configurações opcionais de permalink

Você pode alterar isso na seção Opcional da página de configurações de Permalinks. Então se você quisesse teryoursite.com/blog/featured/ como o permalink para o arquivo dessa categoria, você entraria no blog no campo Base da Categoria. Você não precisa inserir barras invertidas ou usar tags.

Como Trocar Permalinks e Dicas para Posts e Páginas Individuais

Uma vez que você tenha ativado lindos permalinks em seu site WordPress, é hora de otimizar a slug para posts e páginas individuais.

É melhor fazer isso quando você está criando seu conteúdo. Se você mudar a slug de um post, então você mudará a URL que ele usa, e quaisquer links que você ou seus visitantes compartilharam no passado não funcionarão mais.

Para editar a slug de um post, você trabalha na tela de edição de posts para aquele post. Vá em Posts e selecione a postagem que você deseja editar. (Se você está no processo de criação da postagem, você já estará na tela correta).

Na tela de pós edição, selecione o painel Documento no lado direito e vá para a seção Permalink. Clique na seta à direita dela se ainda não estiver aberta.

Edição Permalink na tela de pós-edição
Edição Permalink na tela de pós-edição

A slug gerada automaticamente será exibida no campo URL da slug. Você pode editar isto para tornar a slug mais curta e mais focada.

Antes de editá-lo, copie a slug antiga em algum lugar para que você possa usá-la se precisar configurar um redirecionamento depois (isso só se aplica a postagens publicadas anteriormente).

Slug editado
Slug editado

Agora clique no botão Publicar ou Atualizar para salvar suas alterações.

Não se esqueça: se você editou a slug para um post existente, você pode criar um problema para as pessoas que têm o link original e deve usar redirecionamentos.

Como Alterar Configurações de Permalink para Páginas de Arquivo

Para alterar as configurações de permalink para páginas de arquivos individuais, você pode editar as configurações para a base de ‘categoria’ ou ‘tag’ na tela de configurações de permalink. Você também pode alterar as configurações para uma categoria individual, tag, ou taxonomia personalizada.

Vamos ver como você faz isso, depois passe para a edição do permalink para taxonomias personalizadas e tipos de postagem quando você as registra.

Mudança de Etiqueta para Categorias e Tags

Para isso, vá em Posts > Categorias (ou Posts > Tags).

Tela de edição de categorias
Tela de edição de categorias

Encontre a categoria ou tag cuja slug você deseja editar e clique em seu nome.

Editando uma bala de categoria
Editando uma bala de categoria

Você pode então digitar uma bala para a categoria ou tag. O WordPress irá gerar automaticamente uma baseada no nome da categoria ou tag, mas você não precisa manter isto. Assim como nos posts, é sensato fazer isso quando você configura a categoria ou a tag. Se você fizer isso mais tarde, você precisará configurar um redirecionamento.

Se você configurar uma taxonomia personalizada, ou uma é criada por um plugin, você pode editar as balas para termos individuais nessa taxonomia exatamente da mesma forma. Mas se você quiser editar a slug para a taxonomia em si, você precisará editar algum código.

Troca de slugs por taxonomias personalizadas

Quando você registra uma taxonomia personalizada, as páginas de arquivo dessa taxonomia terão automaticamente uma URL do yoursite.com/taxonomy/term, onde taxonomia é a taxonomia ID e termo é o termo slug.

Imaginemos que você registre uma taxonomia personalizada para idiomas com o ID de kinsta_language, que usa um prefixo para garantir sua distinção de qualquer outra taxonomia registrada por outros plugins. Você pode então criar um termo com um slug de francês.

A URL para o arquivo desse termo de taxonomia seria o yoursite.com/kinsta_language/french.

Mas e se você quiser mudar isso para que não inclua esse prefixo e seja mais fácil de usar? Você pode fazer isso usando o argumento de reescrita quando você registra a taxonomia.

Aqui está o código que você usaria para registrar a taxonomia, incluindo o argumento da reescrita.

function kinsta_register_taxonomy() {                

 // languages
 $labels = array(
  'name'=> __( 'Languages' ),
  'singular_name' => __( 'Language' ),
  'search_items' => __( 'Search Languages' ),
  'all_items' => __( 'All Languages' ),
  'edit_item' => __( 'Edit Languages' ),
  'update_item' => __( 'Update Languages' ),
  'add_new_item' => __( 'Add New Language' ),
  'new_item_name' => __( 'New Language Name' ),
  'menu_name' => __( 'Languages' ),
 );

 $args = array(
  'labels' => $labels,
  'hierarchical' => true,
  'sort' => true,
  'args' => array( 'orderby' => 'term_order' ),
  'rewrite' => array( 'slug' => 'language' ),
  'show_admin_column' => true,
  'show_in_rest' => true
 );

 register_taxonomy( ‘kinsta_language', array( 'post', ‘attachment' ), $args);   

}

add_action( 'init', 'kinsta_register_taxonomy' );

A linha importante nesse código é esta:

'rewrite' => array( 'slug' => 'language' ),

Que reescreve aquela slug da kinsta_language (o ID) para a linguagem (o novo valor). Então sua nova URL seria yoursite.com/language/french. Muito mais fácil de usar!

Como modificar slugs para tipos de publicações personalizadas

Os tipos de posts personalizados funcionam da mesma forma que as taxonomias personalizadas quando você os registra, portanto eles terão uma URL que inclui o ID do tipo de post personalizado.

Vamos imaginar você registrar um tipo de post personalizado chamado kinsta_book e você cria um post desse tipo chamado ‘Huckleberry Finn’, com uma bala de huckleberry-finn.

A URL seriayoursite.com/kinsta_book/huckleberry-finn. E a slug para o arquivo do tipo post seria oyoursite.com/kinsta_book.

Novamente, você pode alterar isso ao registrar o tipo de post personalizado, usando o argumento de reescrita. Novamente, aqui está o código incluindo esse argumento:

function kinsta_register_post_type() {

 // books
 $labels = array(
  'name' => __( 'Books' ),
  'singular_name' => __( 'Book' ),
  'add_new' => __( 'New Book' ),
  'add_new_item' => __( 'Add New Book' ),
  'edit_item' => __( 'Edit Book' ),
  'new_item' => __( 'New Book' ),
  'view_item' => __( 'View Book' ),
  'search_items' => __( 'Search Books' ),
  'not_found' =>  __( 'No Books Found' ),
  'not_found_in_trash' => __( 'No Books found in Trash' ),
 );

 $args = array(
  'labels' => $labels,
  'has_archive' => true,
  'public' => true,
  'hierarchical' => false,
  'supports' => array(
   'title',
   'editor',
   'excerpt',
   'custom-fields',
   'thumbnail',
   'page-attributes'
  ),
  'taxonomies' => array( ‘kinsta_language', 'category'),
  'rewrite'   => array( 'slug' => 'book' )
 );
 
 register_post_type( ‘kinsta_book', $args );

}

add_action( 'init', 'kinsta_register_post_type' );

A linha importante para a slug é esta:

'rewrite'   => array( 'slug' => 'book' )

Então agora as URLs serãoyoursite.com/book/huckleberry-finn para um livro individual e yoursite.com/book para o arquivo.

Edição de Permalinks usando campos personalizados

Além das vars de consulta pública e privada, o WordPress permite que desenvolvedores e usuários avançados definam suas próprias vars de consulta personalizadas. Uma vez registradas, estas variáveis podem ser adicionadas às strings da consulta, assim como as vars de consulta pública, e seus valores também podem ser usados para afetar as consultas.

Veja aqui como construir uma meta consulta personalizada (ou seja, uma consulta que recupera posts por campo personalizado) aproveitando as vars de consulta personalizada.

Para atingir este objetivo, desenvolveremos um plugin a partir do qual registraremos variáveis personalizadas, obteremos seus valores e alteraremos a consulta de acordo.

Aqui está como…

Crie um plugin no seu diretório wp-content/plugins. Adicione uma função para registrar as variáveis da consulta:

/**
 * Register custom query vars
 *
 * @param array $vars The array of available query variables
 */

function myplugin_register_query_vars( $vars ) {

 $vars[] = 'city';
 return $vars;

}

add_filter( 'query_vars', 'myplugin_register_query_vars' );

O filtro query_vars permite adicionar, remover, ou alterar vars de consultas públicas antes da execução da consulta. A função callback no exemplo armazena como argumento um array das variáveis disponíveis adiciona uma nova variável e retorna o mesmo array.

A seguir, adicione esta função que utiliza o valor da variável para alterar a consulta:

/**
 * Build a custom query
 *
 * @param $query obj The WP_Query instance (passed by reference)
 *
 */

function myplugin_pre_get_posts( $query ) {

 // check if the user is requesting an admin page
 // or current query is not the main query
 if ( is_admin() || ! $query->is_main_query() ){
  return;
 }

 $city = get_query_var( 'city' );

 // add meta_query elements
 if( !empty( $city ) ){
  $query->set( 'meta_key', 'city' );
  $query->set( 'meta_value', $city );
  $query->set( 'meta_compare', 'LIKE' );
 }

}

add_action( 'pre_get_posts', 'myplugin_pre_get_posts', 1 );

O gancho de ação pre_get_posts é acionado após a consulta ser criada, mas antes de ser executada. Assim, podemos acionar uma função de callback para esta action para fazer nossas alterações na query antes que ela seja executada. Isso é o que acontece:

  • A função callback mantém uma instância do objeto $query, que é passada por referência, e não por valor. Isto significa que qualquer alteração no objeto de consulta afeta a consulta original e não uma cópia da mesma. Por este motivo, temos que ter certeza de qual consulta será executada (a consulta principal).
  • Mais tarde, obtemos o valor da cidade da string da consulta atual graças à função get_query_var.
  • Finalmente, se $city não estiver vazio, podemos definir os elementos da meta consulta meta_key, meta_value e meta_compare. Estes últimos são vars de consulta privada não disponíveis para solicitações públicas. Seus valores só podem ser definidos de dentro do script.

Agora ative o plugin, adicione o campo personalizado da cidade a um número de posts. Vá em Configurações > Permalinks para atualizar os permalinks, você não precisa fazer nada, basta apenas visitar a tela.

Agora confira URLs como as seguintes:

https://example.com/?city=London

Em resposta a esta solicitação o WordPress retornaria todos os posts onde o valor do campo da cidade é Londres.

Nossa última tarefa é converter a URL feia do exemplo acima em uma estrutura bastante permalink. Vamos adicionar a seguinte função ao nosso plugin:

/**
* Add rewrite tags and rules
*/

function myplugin_rewrite_tag_rule() {

 add_rewrite_tag( '%city%', '([^&]+)' );
 add_rewrite_rule( '^city/([^/]*)/?', 'index.php?city=$matches[1]','top' );

}

add_action('init', 'myplugin_rewrite_tag_rule', 10, 0);

As funções add_rewrite_tag e add_rewrite_rule são parte da API Rewrite. add_rewrite_tag torna o WordPress ciente da var de consulta da cidade, enquanto add_rewrite_rule especifica uma nova regra de reescrita. Ambas as funções devem ser ligadas à ação init. Graças à nova tag e regra, nós podemos usar a seguinte URL:

https://example.com/city/London/

O WordPress irá retornar um arquivo de posts onde o valor do campo personalizado da cidade é Londres.

Nota: sempre que uma nova regra de reescrita for adicionada, os permalinks do WordPress devem ser atualizados a partir da Tela de Permalinks no menu Configurações administrativas.

Como Mudar Permalinks no WooCommerce

O WooCommerce cria tipos de correio personalizados e taxonomias próprias, todas elas com permalinks padrão definidos pelo plugin.

Você pode editar as configurações de permalink e slug para todas elas.

Mudança de Categoria de Produto, Tag, e Atributo Permalinks

Há dois aspectos na edição de permalinks para categorias de produtos, tags e atributos: a estrutura e a slug. Estes funcionam de forma semelhante às categorias e tags regulares.

Para editar a estrutura permalink vá em Configurações > Permalinks e encontre a seção Opcional, onde o WooCommerce terá adicionado alguns campos extras.

Configurações opcionais de permalinks com o WooCommerce instalado
Configurações opcionais de permalinks com o WooCommerce instalado

Aqui você pode editar as configurações de permalinks para as três taxonomias personalizadas adicionadas pelo WooCommerce:

  • Categorias de produtos: o padrão é /product-category/ mas você pode alterar isso se você usar terminologia diferente em sua loja. Certifique-se de que sua alteração não entre em conflito com suas configurações para categorias regulares, que não são a mesma coisa.
  • Etiquetas de produto: o padrão é /product-tag/, e você pode alterá-la se quiser. Certifique-se de evitar um choque com as tags de produtos regulares.
  • Atributos do produto: estes funcionam de forma diferente das outras duas taxonomias e têm uma estrutura diferente. O que quer que você acrescente aqui será sempre seguido pela slug para o nome do atributo individual (por exemplo, tamanho) e o atributo em si (o termo, por exemplo, grande).

Se você quiser editar a slug para uma categoria ou tag individual, vá em Produtos > Categorias (ou Produtos > Tags) e e edite-as da mesma forma que você postaria tags e categorias.

Categoria de produto edição de lesmas
Categoria de produto edição de slug

A edição de atributos é diferente porque você não só tem o atributo em si, mas também os termos do atributo.

Comece indo em Produtos > Atributos.

Tela de atributos do produto
Tela de atributos do produto

Ao criar um novo atributo, você usa o campo Slug para definir a slug da mesma forma que você definiria para uma tag ou categoria. Alternativamente, para editar a slug para um atributo existente, clique no link Editar abaixo desse atributo na lista do lado direito.

Edição de caracóis de atributos de produtos
Edição de caracóis de atributos de produtos

Clique em Atualizar para salvar suas alterações.

Para editar o termo slugs do atributo, vá para a tela de atributos e clique no link Configurar termos ao lado do atributo. Isto o levará para a lista de termos para aquele atributo.

Listagem de termos de atributos de produtos
Listagem de termos de atributos de produtos

Agora edite a slug para esse termo da mesma forma que você faria para uma categoria ou tag. Isto será então adicionado à URL do arquivo para os produtos que possuem esse termo.

Mudança de Permalinks de Produto

Você edita permalinks de produtos via Settings > Permalinks. Vá até a seção de permalinks de produtos.

Configurações de permalinks de produtos
Configurações de permalinks de produtos

Aqui você pode escolher entre quatro configurações de permalinks para seus produtos:

  • Default: Se você já ativou os permalinks bonitos, isto irá usar a slug de cada produto com o /produto/base.
  • Base da loja: Em vez de usar /produto/, a sua loja vai usar /shop/.
  • Base de lojas com categoria: Insere a categoria do produto atual na URL. Isso pode adicionar palavras-chave que você quer segmentar se suas categorias de produto refletirem essas, mas não ajudará seu UX, pois ele cria URLs longas.
  • Base personalizada: Cria sua própria estrutura URL usando as palavras que se aplicam à sua loja. Você não pode remover a base por completo, você tem que usar alguma coisa.

Uma vez escolhida a opção desejada, clique no botão Save Changes para salvar a sua escolha.

Você também pode editar a slug de um produto individual na tela de edição do produto, exatamente da mesma forma que você faria para um post ou página.

Como mudar os permalinks do WordPress com um plugin

You can use a third party plugin to make amendments to your permalink settings over and above what the default WordPress Permalinks settings screen lets you do.

WordPress plugin Custom Permalinks
WordPress plugin Custom Permalinks
  • O plugin Permalinks personalizado permite que você defina a URL de qualquer categoria de post ou tag para o que você quiser. Ele também configura redirecionamentos para que as URLs antigas ainda funcionem.
  • O plugin Permalink Manager Lite suporta tipos de posts personalizados, bem como taxonomias personalizadas na versão pro. Ele também inclui redirecionamentos e trabalha com plugins de terceiros, como WooCommerce e Yoast.

Como Mudar os Permalinks do WordPress no phpMyAdmin

Se você sabe o que está fazendo e tem certeza de que não vai quebrar nada, você também pode editar permalinks no phpMyAdmin.

Isto é algo que você pode precisar fazer se não conseguir acessar a tela de configurações de Permalinks por qualquer motivo.

Comece por fazer o backup do seu banco de dados. Você vai estar editando diretamente, então é importante fazer um backup caso você cometa algum erro.

Acesse o phpMyAdmin.

Se você é um cliente Kinsta, você faz isso fazendo login no MyKinsta e depois selecionando o site com o qual deseja trabalhar.

Role para baixo na tela Info e clique no botão Open phpMyAdmin.

Abra o phpMyAdmin em MyKinsta
Abra o phpMyAdmin em MyKinsta

Digite o nome de usuário e senha do seu banco de dados para acessar o phpMyAdmin. Você pode recuperá-los a partir da tela Info.

Clique na guia Databases no topo e selecione o banco de dados com o qual você deseja trabalhar.

Estrutura de base de dados no phpMyAdmin
Estrutura de base de dados no phpMyAdmin

Selecione a tabela wp_options e encontre a entrada permalink_structure na coluna option_name. Você pode precisar navegar além da primeira página de entradas.

Encontrando a entrada permalink_structure
Encontrando a entrada permalink_structure

Clique no link Editar à esquerda para essa entrada e depois no campo option_value, adicione a estrutura permalink que você deseja usar. Use as tags que identificamos anteriormente para uso na tela de configurações de Permalinks.

Editando a estrutura permalink
Editando a estrutura permalink

Clique em Ir. Agora os seus permalinks serão atualizados.

Para leitura adicional, confira nosso artigo: Como mudar sua URL ou vídeo do WordPress:

Trabalhando com Permalinks de Imagem

As imagens têm permalinks todos próprios, e cada imagem ou arquivo de mídia que você enviar para o seu site terá um número de links criados para ele:

  • O link para a imagem que você carregou – a imagem original.
  • Links para as novas imagens que são geradas usando os tamanhos de mídia que você definir através de Configurações > Mídia.

O link para a imagem original

Ao carregar uma imagem, um link único será criado para o arquivo onde ela está armazenada no seu servidor. Isso incluirá o caminho para onde ela é mantida, que é wp-content/uploads.

Também incluirá a data em que você fez o upload da imagem. Isto significa que se você carregar outra imagem com o mesmo nome de arquivo no próximo mês (ou no próximo ano), as imagens não serão confundidas, pois terão caminhos de arquivo únicos.

Se você carregar uma imagem chamada funnycat.jpg em 1 de abril de 2020, seu link será yoursite.com/wp-content/uploads/04/funnycat.jpg. O 04 indica que o arquivo foi carregado em abril. O WordPress cria uma pasta numerada no diretório de uploads para cada mês.

Se você carregasse um arquivo que não fosse uma imagem, a URL funcionaria da mesma forma: yoursite.com/wp-content/uploads/04/document.pdf.

Se você carregar mais de um arquivo com o mesmo nome em um determinado mês, o WordPress anexará um número ao final do nome do arquivo. Então se eu carregar outra imagem chamada funnycat.jpg, ela vai chamá-la de funnycat-1.jpg.

Se você precisar fazer um link para a imagem original ou encontrá-la para verificar se ela está funcionando corretamente, é assim que você encontra o link.

Você também pode encontrar o link para o arquivo anexo indo em Mídia > Biblioteca e clicando no arquivo. A tela de edição será exibida para esse arquivo e você poderá encontrar sua URL no campo URL do arquivo, no lado direito.

Link da imagem original
Link da imagem original

Você também pode fazer um link para o arquivo usando a função wp_get_attachment_image() fornecida pelo WordPress. Esta é uma prática melhor, pois significa que o link não irá mudar se o anexo for movido no futuro. Esta é uma função que você usaria em um plugin ou em um arquivo modelo de tema, e usa o ID único do arquivo anexo.

No caso da minha imagem do funnycat.jpg, o ID é 4995. Posso conseguir isso indo até a tela de edição de imagem e clicando na URL para esta tela no topo da janela do navegador. Os dígitos finais serão o ID.

Para buscar esta imagem em um arquivo template ou plugin, eu usaria este código:

<?php wp_get_attachment image( ‘4995’ ); ?>

Isto iria buscar a imagem em tamanho real. Se eu quisesse produzi-la, eu adicionaria eco:

<?php echo wp_get_attachment image( ‘4995’ ); ?>

Permalinks para Imagens de Diferentes Tamanhos

O WordPress também irá criar imagens usando as configurações de tamanho de arquivo que foram configuradas para o seu site. Você faz isso indo em Configurações > Mídia.

Tela de configurações de mídia
Tela de configurações de mídia

Assim, se sua imagem já for maior que a grande, ela criará três imagens – grande, média e miniatura.

Ele não os nomeia usando estas convenções porque você pode mudar o cenário para aqueles no futuro. Ao invés disso, ele usa as dimensões do arquivo dentro do nome do arquivo e os salva no mesmo local da imagem original, na pasta do mês em wp-content/uploads.

A maneira mais fácil de encontrar os links é olhar para o seu cliente FTP e encontrar todas as imagens carregadas em um determinado mês.

Imagens carregadas em cliente FTP
Imagens carregadas em cliente FTP

Vamos pegar a imagem que eu carreguei no meu site chamado funnycat.jpg. Você pode vê-la na captura de tela acima.

O WordPress também criou arquivos extras usando as configurações de tamanho de arquivo para o meu site:

  • funnycat-150×150.jpg
  • funnycat-222×300.jpg
  • funnycat-300×200.jpg
  • funnycat-757×1024.jpg
  • funnycat-768×1040.jpg
  • funnycat-1135×1536.jpg
  • funnycat-1513×2048.jpg

Existem mais do que os padrões porque estou usando plugins que fazem uso de tamanhos extras de imagem e definiram um tamanho adicional personalizado para um dos meus modelos de página no tema. Mas você poderia usar o link para qualquer um deles como um link difícil se quisesse.

Entretanto uma opção melhor se você quisesse linkar para a imagem, seria usar a função wp_get_attachment_image() que já vimos, e adicionar um parâmetro extra para o tamanho da imagem.

Então, para produzir a imagem de médio porte, você usaria isto:

<?php echo wp_get_attachment image( ‘4995’, ‘medium’ ); ?>

Essa é uma maneira muito mais robusta de obter a imagem do que criar um link rígido no seu código.

Como Redirecionar Permalinks para Diferentes Tipos de Conteúdo

Editar a slug de um post existente, ou alterar as configurações de permalink em geral, pode causar um problema se você já tiver compartilhado posts anteriormente usando os links antigos. Se alguém clicar nesses links, eles serão levados para uma página 404.

Você pode corrigir isso criando redirecionamentos a partir dos links antigos para os novos.

Redirecionamento de Posts e Páginas Individuais

Para redirecionar a slug antiga de um post para o novo, você precisará configurar uma regra de redirecionamento para essas duas URLs.

Se você está com Kinsta, você pode criar regras de redirecionamento no painel do MyKinsta.

Encontre seu site, e depois clique na opção Redirecionar no menu.

Redirecionamentos no MyKinsta
Redirecionamentos no MyKinsta

Clique no botão Adicionar regra de redirecionamento para abrir o popup de regras de redirecionamento.

MyKinsta adiciona regra de redirecionamento
MyKinsta adiciona regra de redirecionamento

Para adicionar seu redirecionamento, selecione 301 redirecionar, depois digite a bala antiga como o Redirecionar do valor e a nova bala como o Redirecionar para o valor.

Clique no botão Adicionar regra de redirecionamento e o seu redirecionamento será configurado.

Se você não estiver com Kinsta, você pode usar um plugin de redirecionamento para configurar redirecionamentos. O plugin de redirecionamento é o mais popular. Ele permitirá que você configure redirecionamentos manualmente e também irá monitorar mudanças nas suas balas e configurar redirecionamentos automaticamente para você. Tenha cuidado para evitar loops de redirecionamento, pois estes resultam no erro de ‘too many redirects‘, impedindo que as páginas sejam carregadas.

Abaixo você pode ver que eu troquei a slug por um dos meus posts e o plugin a pegou e estabeleceu uma regra de redirecionamento.

Configuração de regra de redirecionamento do plugin de redirecionamento
Configuração de regra de redirecionamento do plugin de redirecionamento

Redirecionando Páginas de Arquivo

Se você alterar a estrutura das suas páginas de arquivo usando a seção Opcional na página de configurações de Permalinks, qualquer pessoa que use o link antigo para um arquivo de categoria será levada para a sua página 404. Portanto, você precisará configurar um redirecionamento de wildcard.

No MyKinsta, crie uma regra de redirecionamento que usa a estrutura base que você estava usando antes e a que você está usando agora, com um asterisco para denotar um wildcard depois dele.

No Redirecionamento do campo, digite o antigo caminho para as categorias, com um wildcard. Ele precisa tomar a forma /oldslug/(.*)$. A entrada para Redirecionar para precisa tomar a forma /newslug/$1.

Então se você mudou sua estrutura de URL de categoria para usar o blog antes do nome da categoria ao invés da categoria padrão, você digitaria /category/(.*)$ no campo Redirecionar de e /blog/$1 no campo Redirecionar para.

Adicionando um wildcard redirecionado no MyKinsta
Adicionando um wildcard redirecionado no MyKinsta

Se você estiver usando o plugin Redirection, você precisará ativar as funções Regex primeiro, pois o asterisco wildcard é uma função regex.

Vá para Ferramentas > Redirecionamento e vá para Adicionar novo redirecionamento na seção de redirecionamento da tela.

Criando uma nova regra de redirecionamento com o plugin de redirecionamento
Criando uma nova regra de redirecionamento com o plugin de redirecionamento

Clique na caixa de opções URLs/Regex e marque a caixa Regex.

Configurando um wildcard redirecionado com o plugin Redirecionamento
Configurando um wildcard redirecionado com o plugin Redirecionamento

No campo URL de origem, digite o caminho antigo para as categorias, com um curinga. Ele precisa tomar a forma /oldslug/(.*)$. A entrada para a URL de destino precisa tomar a forma /newslug/$1. Isso funciona exatamente da mesma forma que no MyKinsta.

Confira nosso guia em vídeo para as Melhores Práticas de Redirecionamento para WordPress:

Solucionando Problemas com o WordPress Permalinks

Ocasionalmente você pode descobrir que os permalinks não funcionam como você espera. Aqui está o que fazer se isso acontecer.

Permalinks Não Funciona Após Registrar um Tipo de Post

Às vezes você cadastra um novo tipo de post ou taxonomia e os links para as páginas de arquivo relevantes ou para posts do tipo post não se preocupam.

Não entre em pânico! Isso simplesmente porque o WordPress não sabe que o tipo de post personalizado ou taxonomia significa uma mudança nas configurações de permalink. Simplesmente vá em Settlings > Permalinks para atualizar as configurações. Você nem precisa fazer nenhuma alteração ou clicar no botão Save Changes – basta abrir a tela para que seja suficiente.

Permalinks que não se comportam da maneira que você quer

Se seus permalinks não estão funcionando como você espera e não é porque você acabou de registrar um tipo de correio personalizado ou taxonomia, tente estas dicas.

  • Verifique se você digitou a URL corretamente no navegador.
  • Vá em Configurações > Permalinks e verifique a configuração. As tags estão corretas? Certifique-se de que você não perdeu nada ou usou a sintaxe errada.
  • Limpe o cache do seu site se você estiver usando um plugin de cache. O cache pode interferir com as alterações nos links.
  • Se você mudou as configurações dos permalinks, você pode ter links no corpo do conteúdo do seu site que agora estão desatualizados. Edite-os ou configure redirecione-os.
  • Verifique se você alterou manualmente a slug para algum post e se estes precisam de edição.
  • Verifique se você tem um plugin de redirecionamento instalado ou um plugin que inclua redirecionamento. Se sim, verifique que redirecionamentos você adicionou às configurações.
  • Se você tiver algum plugin que afete os tipos de posts ou links, tente desativá-los e ver se isso resolve o problema.
  • Se você não conseguir acessar a tela de configurações de Permalinks, use o método detalhado anteriormente para editar os Permalinks via phpMyAdmin.

Siga estas dicas e você deve ser capaz de fazer com que seus permalinks funcionem como deveriam.

Resumo

Permalinks são uma característica incrivelmente útil do WordPress. Você pode usá-los para melhorar a experiência do usuário e aumentar a sua classificação nos motores de busca.

Se você seguir o guia acima, você terá permalinks que são otimizados. Você será capaz de configurá-los para funcionar exatamente da maneira que você precisa, para todos os tipos de postes, taxonomias e cartuchos personalizados.

Agora, é a sua vez: como você administra seus permalinks? Esquecemos de cobrir alguma coisa sobre os permalinks do WordPress? Nos deixe saber nos comentários abaixo!

Rachel McCollin

Rachel McCollin has been helping people build websites with WordPress since 2010. She's a huge fan of self-hosted WordPress and wants to help as many people as possible create an awesome website with it.