Você quer aprender a truncar títulos de postagens com PHP?
O truncamento, ou encurtamento, permite controlar o tamanho dos títulos das publicações do blog em todo o site. Dependendo do seu tema do WordPress, talvez você queira exibir títulos mais curtos do que os suportados pelo tema.
Neste artigo, mostraremos a você como truncar títulos de posts no WordPress.
Por que truncar os títulos das postagens no WordPress com PHP?
O truncamento de títulos de postagens no WordPress com PHP oferece mais controle sobre o tamanho dos títulos das postagens e como eles são exibidos no site.
Por exemplo, talvez você queira cortar os títulos de postagens longas na página inicial para que eles não atrapalhem o design do seu blog WordPress.
Observação: alguns usuários simplesmente querem usar títulos de posts mais curtos para otimizar os posts do blog para SEO. Nesse caso, você não precisa truncar os títulos das postagens. Em vez disso, você pode simplesmente usar um plug-in de SEO do WordPress para tornar sua tag de título mais curta.
Um plug-in de SEO permitirá que você crie títulos personalizados de SEO para as páginas de resultados de pesquisa e, ao mesmo tempo, mantenha títulos de posts mais longos para os visitantes do site.
Para obter mais detalhes, consulte nosso guia definitivo sobre como configurar corretamente o All in One SEO.
Dito isso, vamos mostrar como truncar os títulos das postagens do WordPress em seu site usando dois métodos diferentes:
Método 1: Truncar os títulos das postagens do WordPress com uma função do WordPress
A maneira mais fácil de truncar os títulos das postagens no WordPress é adicionar código PHP aos seus arquivos do WordPress. Se você nunca fez isso antes, consulte nosso guia sobre como copiar e colar código no WordPress.
Muitos tutoriais lhe dirão para adicionar o código diretamente ao arquivo functions.php do seu tema. No entanto, qualquer erro pode causar uma série de erros no WordPress ou até mesmo quebrar seu site.
Por isso, recomendamos o uso do plug-in gratuito WPCode, seguindo nosso guia sobre como adicionar código personalizado no WordPress.
Primeiro, você precisa instalar e ativar o plugin gratuito WPCode. Se precisar de ajuda com isso, consulte nosso guia passo a passo sobre como instalar um plug-in do WordPress.
Após a ativação, selecione Code Snippets ” + Add Snippet na barra lateral do administrador. Em seguida, passe o mouse sobre a opção “Add Your Custom Code (New Snippet)” (Adicionar seu código personalizado (novo snippet)) e clique no botão “Use snippet” (Usar snippet) exibido.
Isso abrirá uma nova página na qual você poderá digitar um título para o snippet e, em seguida, adicionar o código.
Basta copiar e colar o código a seguir no painel Visualização de código no WPCode.
function max_title_length( $title ) {
$max = 35;
if( strlen( $title ) > $max ) {
return substr( $title, 0, $max ). " …";
} else {
return $title;
}
}
add_filter( 'the_title', 'max_title_length');
Esse código será executado dentro do loop de postagem do WordPress e encurtará os títulos das postagens do blog para “35” caracteres. Para alterar o tamanho do título, basta definir a variável $max
com o tamanho de título de sua preferência.
Em seguida, você precisa escolher “PHP Snippet” no menu suspenso Code Type (Tipo de código).
Por fim, você precisará ativar a configuração Active e, em seguida, salvar o snippet clicando no botão “Save Snippet”.
Agora que o snippet de código está ativo, os títulos das postagens do seu blog serão encurtados sempre que aparecerem no site do WordPress.
Método 2: Truncar os títulos das postagens do WordPress com PHP alterando os arquivos do tema do WordPress
Outra maneira de truncar os títulos das postagens do WordPress é adicionar código diretamente aos arquivos de tema do WordPress.
Esse método lhe dá mais controle sobre onde os títulos são encurtados. Por exemplo, talvez você queira cortar os títulos apenas na página inicial, mas exibir o título completo na postagem do blog.
Para fazer isso, você precisará adicionar o código PHP diretamente aos arquivos de tema do WordPress onde deseja truncar os títulos das publicações do blog.
Por exemplo, você pode adicionar o trecho de código abaixo ao seu arquivo index.php
para substituir a tag the_title
existente dentro do loop de postagem do WordPress para alterar o comprimento do título em todo o site:
<a href="<?php the_permalink() ?>">
<?php
$thetitle = $post->post_title; /* or you can use get_the_title() */
$getlength = strlen($thetitle);
$thelength = 25;
echo substr($thetitle, 0, $thelength);
if ($getlength > $thelength) echo "...";
?>
</a>
Esse código define o tamanho do título da postagem como 25 caracteres. Se o tamanho do título for maior que 25 caracteres, ele cortará o título após 25 caracteres e adicionará uma elipse ‘…’ ao final.
Para alterar o tamanho dos caracteres de seu site, basta alterar a variável $thelength
para a contagem de caracteres de sua preferência.
Depois de adicionar o código e salvar o arquivo, você precisa carregá-lo no diretório de temas da sua conta de hospedagem do WordPress.
Você pode fazer isso usando um cliente FTP ou a ferramenta de gerenciamento de arquivos no painel de controle da sua hospedagem WordPress. Se você nunca usou o FTP antes, confira nosso guia sobre como usar o FTP para fazer upload de arquivos no WordPress.
Depois que o código for adicionado, os títulos das postagens serão truncados de acordo com a contagem de caracteres que você definiu.
Dica profissional: se você usou o Método 2, perderá essas alterações quando atualizar o tema para uma nova versão. Para evitar isso, consulte nosso guia sobre como atualizar seu tema do WordPress sem perder a personalização.
Esperamos que este artigo tenha ajudado você a aprender como truncar títulos de posts do WordPress com PHP. Talvez você também queira ver nosso guia sobre como escrever uma ótima postagem de blog e nossas escolhas de especialistas sobre os melhores plug-ins de marcação de esquema para WordPress.
Se você gostou deste artigo, inscreva-se em nosso canal do YouTube para receber tutoriais em vídeo sobre o WordPress. Você também pode nos encontrar no Twitter e no Facebook.
Syed Balkhi
Hey WPBeginner readers,
Did you know you can win exciting prizes by commenting on WPBeginner?
Every month, our top blog commenters will win HUGE rewards, including premium WordPress plugin licenses and cash prizes.
You can get more details about the contest from here.
Start sharing your thoughts below to stand a chance to win!
Achintha
Hey There is a wordpress function for limit words. Better to use that.
http://codex.wordpress.org/Function_Reference/wp_trim_words
dustinporchia
This is golden!….Thanks wpbeginner!
adm_mnz
If you use mb_substr there is a parameter for encoding.
http://php.net/manual/en/function.mb-substr.php
Junaid
Sweet! was just looking for a clients project
Marco
Does anybody know how the link title of previous_post_link(); could be truncated?
thanks
Brow
Thanks this worked perfectly! I didn’t want to end up using a plugin just to do this and was happy your code cut down the titles properly.
Thanks again!
Joey Figaro
Hey there – thanks for writing this up! I happened to stumble upon another example of how to achieve this and it seemed a lot more simple, so I will share it with you and see what you think.
functions.php:
function new_excerpt_length($length) {
return 100;
}
add_filter(‘excerpt_length’, ‘new_excerpt_length’);
Editorial Staff
These are two entirely different concepts…. The one you recommend is for post excerpts whereas the one we are talking about is for Post Titles.
Administrador
Joey Figaro
Wow, that’s embarrassing.
Lena
Hi!
This doesn’t work if you use other languages than english. My swedish titel looks awful because the code doesn’t translate å ä and ö comparing to the default code. Any suggestions of what I have to do? This is a good trick and i want to use it.
Kindly Lillan
Editorial Staff
Hmm… that does sound like a serious issue. Wondering if you can specify the language via PHP, so it counts characters in that instead of english.
Administrador
Alex
You might wanna try to specify a different charset, check Latin1 or utf8 i think they contain those chars as well.. I had some similar issues recently since my first language is german
Editorial Staff
Thank you for helping out Alex
Ben Kulbertis
Thanks for the Trackback!
Editorial Staff
We appreciate your work for the community. Thanks for the nice snippet
Administrador
Navjot Singh
One Suggestion, this type of code should be included in functions.php and not index.php. You can use conditional tags to restrict the code to any page you want whether its the homepage or any other page where you want.
Editorial Staff
This is just for specific areas… But yes, it can be customized and placed in functions.php
Administrador
Thomas Scholz
Don’t use strlen(). Use mb_strlen() or strlen(utf8_decode($str)) or you risk to truncate the string inside of a multi-byte character. The same applies to mb_substr().
Oh, and an ellipsis is one character: …
snipsley
Thanks!! mb_strlen() a mb_substr solved my encoding problem. I’ve been looking for this for hours!
Lena Backstedt
BIG tnx!
mb_strlen() also seems to work for the swedish language (so far I can see)