Remover hash dos links "Continuar a Ler"

WordPress é um dos CMS (Sistema de Gestão de Conteúdo, em português) mais conhecidos do mundo, porque é muito simples de utilizar e tem milhares de temas e plugins gratuitos e pagos à disposição do utilizador.

Por vezes precisamos de melhorar os temas ou alguma outra coisa. Quando estava a desenvolver o tema deste blog deparei-me com um simples problema: os links dos botões “Continuar a Ler” levavam o utilizador ao local onde havia colocado o código, mas eu não queria que isso acontecesse.

Depois de uma rápida pesquisa deparei-me com um fórum onde explicavam, em Inglês, como proceder. Afinal é bastante simples. No ficheiro functions.php do vosso tema basta colarem o seguinte código:

<?php

function remove_more_link_scroll( $link ) {
  $link = preg_replace( '|#more-[0-9]+|', '', $link );
  return $link;
}

add_filter( 'the_content_more_link', 'remove_more_link_scroll' );

Sim, está bem, mas o que faz realmente esse código? Vamos começar por analisar o que existe dentro da função remove_more_link_scroll(). Esta aceita uma variável a que vamos chamar $link.

Explicação

Assim, vamos começar pela função preg_replace(). Esta aceita três argumentos sendo o primeiro uma expressão regular, o segundo o substituto e o terceiro o texto. Esta função pesquisa no texto a expressão regular e substitui-a.

Neste caso, a função preg_replace() substitui no $link  todos os caracteres possíveis na expressão #more-[0-9]+ por '' ou seja, nada. Depois disso, a função retorna o link sem a hash que direciona para a âncora.

Dentro da expressão regular que está contida na função, temos vários “locais” a destacar. Os caracteres que se encontram no início e no final (|) servem para delimitar o início e o fim da expressão de forma a que o PHP a consiga detetar.

O texto #more-  corresponde ao início da hash do link. O WordPress faz as âncoras de ler mais iniciando por #more-.

O resto, [0-9]+, quer dizer que procura por qualquer número entre 0 e 9 e fá-lo mais do que uma vez.

Depois desta função, nós temos que a adicionar aos filtros do WordPress e, para isso, utilizamos as funções próprias do WordPress que, neste caso é a add_filter(). Esta aceita quatro argumentos mas só vamos falar de 2 que são os únicos obrigatórios. Se quiseres saber mais sobre a adição de filtros aos temas no WordPress podes aceder a esta página do site do WP em inglês.

O primeiro é a tag que, neste caso é ‘the_content_more_link’ . Podes obter mais informações sobre estas tags aqui. O segundo argumento é a função a adicionar, que é a função que criámos antes.


Sei que é uma dica simples mas de certeza que vai ajudar alguém tal como me ajudou a mim :)

Or if you don't know what a response is, you can always write a webmention comment (you don't need to know what that is).