Pular a navegação
Atualizado
junho 7, 2024

WPML Sticky Links evita que os links entre páginas e posts sejam quebrados, mesmo que as páginas sejam movidas e renomeadas.

WordPress facilita demais a alteração dos endereços de página, fazendo com que todos os links de entrada sejam interrompidos (erro 404). Aqui estão algumas ações que podem resultar em um erro 404:

  • Alterar o pai da página
  • Alterar o slug
  • Alterar a estrutura de permalink do site

WPML evita que as alterações nos URLs quebrem os links de entrada. Quando você cria um link, WPML o torna automaticamente fixo. Em vez de armazenar o URL dessa página (no momento em que o link foi criado), ele armazena o número da página. Isso nunca poderá mudar, não importa o que você faça.

Em seguida, quando a página for exibida, WPML insere o permalink da página para a qual você está fazendo o link. Sempre que o URL for alterado, todas as páginas com links para ele serão atualizadas imediatamente e terão links para o endereço correto.

As capturas de tela a seguir mostram a aparência dos links internos no banco de dados, quando os Sticky Links estão ativados.

Links transformados em Sticky pelo WPML visualizados no editor de blocos
Links transformados em Sticky pelo WPML visualizados no editor de blocos
Links transformados em Sticky pelo WPML visualizados no editor Classic
Links transformados em Sticky pelo WPML visualizados no editor Classic

Seus usuários nunca verão esses links “estranhos”. Em vez disso, WPML os substituirá pelos permalinks atuais ao exibir as páginas.

Depois de ativar o módulo Sticky Links, você pode controlar as cadeias de caracteres que ele manipula. Para fazer isso, vá para a seção WPML → Página de links fixos .

Sticky Links antes do processamento
Sticky Links antes do processamento

Por padrão, WPML transformará todos os links no corpo do post em links fixos. Você também pode transformar links em widgets e strings em links fixos.

WPML permitirá que você substitua em lote todos os links regulares por links fixos. Ele também informará os links quebrados existentes e ajudará a corrigi-los.

Se você ativou Sticky Links depois de criar algum conteúdo, os links desse conteúdo existente não serão imediatamente transformados em links fixos.

A tela de administração Sticky Links informa a você quanto conteúdo pode incluir links normais (não adesivos). WPML pode analisar esse conteúdo e converter todos os links em links fixos. Para isso, clique no botão Scan.

Você sempre pode retornar seus links para permalinks regulares (não fixos) clicando em Revert sticky URLs to permalinks.

Link para páginas em um idioma diferente

Às vezes, você pode querer inserir um link para uma página que está em outro idioma. Como Sticky Links ajusta os links automaticamente, ele pode impedir que você faça isso e, em vez disso, ajustar o link para apontar para o mesmo idioma.

Para poder adicionar links a páginas em outros idiomas, você precisa adicionar o seguinte filtro ao arquivo functions.php do seu tema.

Allow links to pages in other languages
add_filter( 'wpml_sl_blacklist_requests', 'wpml_sl_blacklist_requests', 10, 2 );

function wpml_sl_blacklist_requests( $blacklist, $sitepress ) {
    $blacklist[] = 'documentation';
    return $blacklist;
}

No código acima, use a matriz $blacklist para especificar todos os slugs de URL das páginas nos idiomas originais para os quais você deseja criar links.

Em nosso exemplo, queremos criar um link para a versão em inglês das páginas “Documentation” (slug “documentation”) e “Page Builders” (slug “page-builders”), portanto, usamos as duas linhas a seguir:

Example of specifying the list of URLs to allow linking to
$blacklist[] = 'documentation';

$blacklist[] = 'page-builders';

Por padrão, o plug-in Sticky Links não procura links gerados por códigos de acesso.

Se você tiver um shortcode na sua página que gere um link como “?page_id=XX“, ele será exibido para os usuários sem ser convertido em um permalink.

Para lidar com esse conteúdo de shortcode com o Sticky Links, adicione este snippet ao arquivo functions.php:

Handle links inside shortcode content
if ( class_exists( 'WPML_Sticky_Links' ) ) {
	global $WPML_Sticky_Links;
	add_filter( 'do_shortcode_tag', [ $WPML_Sticky_Links, 'show_permalinks' ], 0 );
}