Home

Três maneiras diferentes de customizar a função the_excerpt

Postado por Carlos Henrique em 04/01/08 e arquivado em Dicas e tutorias
Bom, eu lembro muito bem quando quebrava a cabeça com isso. No início de 2005(acho) quando comecei a "futucar" o WordPress sempre apanhava com as tais tags the_excerpt e the_content. Eu queria de qualquer maneira limitar a quantidade de palavras que elas geravam.

Por padrão quando você queria exibir apenas um resumo do post em vez do post inteiro na home, você optava por usar o

more

ou usar a tag

the_excerpt

no lugar de

the_content

.

Não sei se fui bem claro. Mas enfim, a the_content quando usada exibe o conteúdo do post por inteiro (se não usado o

function wp_trim_excerpt($text) { // Fakes an excerpt if needed

), já o the_excerpt exibe só um resumo do post, que por padrão, chama os últimos 55 carácteres.

Se mesmo assim não entendeu, abra o index.php do seu tema e com certeza você vai encontrar uma dessas duas tags lá. Na verdade pra quem já é intimo dos temas do WordPress é mais fácil de entender.

Focando no assunto… Como já disse, por padrão, o Wordpress exibe só os últimos 55 caracteres do post quando usado o the_excerpt. Mas e se você quisesse mais ou menos caracteres? Bom, há uma solução, na verdade, TRÊS e nenhuma delas usando plugins, ou seja, você só vai usar o que o WordPress oferece…

1ª Maneira: Editando o formating.php

Abra o arquivo formating.php na pasta wp-includes/. Lá exatamente na linha 810, você irá encontrar um código como esse:

global $post;
if ( '' == $text ) {
$text = get_the_content('');
$text = apply_filters('the_content', $text);
$text = str_replace(']]>;', ']]>;', $text);
$text = strip_tags($text);
$excerpt_length = 55;
$words = explode(' ', $text, $excerpt_length + 1);
if (count($words) > $excerpt_length) {
array_pop($words);
array_push($words, '...');
$text = implode(' ', $words);
}
return $text;
if($resume_link)
$resume = ''.$resume.'';
$text = str_replace(']]>', ']]>', $text);

É esse o código responsável pelas funções do the_excerpt. Agora observem a linha:

array_push($words, $resume);

Precisa falar mais alguma coisa? Apenas edite o número para que ele chame a quantidade de caracteres que você quer que seja exibida, depois logicamente, faça o upload de volta pro wp-includes e se necessário, substituindo o arquivo original. Daí sempre que você usar o the_excerpt ele vai gerar só a quantidade de caracteres que você configurou.

Porém há um ponto negativo: Tenha um backup desse arquivo que você editou, pois sempre que você atualizar o WordPress você terá que re-enviar o mesmo.

2ª Maneira: Criando um resumo personalizado

Caso você não saiba, na mesma tela onde você escreve seus posts, há um campo responsável por criar um resumo do post personalizado.
Excerpt Não encontrou? O campo fica meio escondido como uma aba em abaixo dos "uploads".

Para usá-lo é só escrever o que você quiser no campo, publique o post e pronto. Daí, em vez de exibir os tais 55 caracteres, ele exibe o que você escreveu no campo. O único problema mesmo é que da um pouquinho de trabalho, já que não é automático. Portanto você terá que criar um desses pra cada post.

3ª Maneira: Usando programação!

O Ezequiel da comunidade WordPress Brasil no Orkut, postou uma dica de como limitar a quantidade de caracteres. Só que nessa dica é criada uma nova tag, ou seja, não se usa nem the_excerpt e nem the_content.

Não sei explicar muito bem o que cada código faz, já que não sou nenhum expert em php, mas vou fazer um "copy-paste" de como ele fez (com a devida autorização)!

Coloque o seguinte código no header.php do tema, na primeira linha de preferência.

echo $text;
} ?>













Simples, em vez de usar


ou


, você usará uma nova tag :

Personalizando:

Palavras: A quantidade de palavras que será exibida.
more: É o que vai ser exibido no fim do resumo, no caso é Continue Lendo, mas claro que poderá ser editado.
link: coloque como FALSE se não quiser que "Continue lendo" aponte para um link pro resto do post e TRUE para o contrário.

Exemplo:

O código acima vai exibir as últimas 25 palavras do post, terminará o resumo com um "(…)" que não apontará para nenhum link.

E é isso, espero que tenham gostado!




18 Comentários em “Três maneiras diferentes de customizar a função the_excerpt”

  1. Joao says:

    Nossa, adorei! Primeiro blog sobre wp que vejo que mostra tutos assim! Vlw e pode ter certeza que vou ser um leitor fiel!

  2. Precisla says:

    Vlw! Muito Obrigada…Estava precisando disso!

  3. Cido says:

    Putz, passei a tarde toda procurando isso. Valeu mesmo

  4. Carlos, meus parabéns, pelo que vejo você criou o blog para dicas sobre Wordpress que todos estavam a procura, espero que agora eu consiga desenvolver um tema bem legal para meu blog.

    Até mais e boa sorte.

    []'s!

  5. Eduardo says:

    Olá Mr.,

    Belo post!

    Aqui aconteceu um imprevisto, vê se pode me ajudar: apesar de funcionar como descrito, limitando as palavras, criando link, etc… sumiram as imagens dos posts, e também os vídeos.

    Tem como resolver?

    Obrigado!

  6. Carlos Henrique says:

    Eduardo,

    Por padrão do próprio WordPress a tag the_excerpt mostra somente o texto do post, mais nada, sem links, sem imagens, só o resumdo do post mesmo.

    Se você quiser que as imagens sejam exidas terá que adotar a dica 2, usando o Optional Excerpt. Tudo que você colocar neste campo será interpretado como resumo, incluindo a exibição das imagens.

  7. [...] Alves: Alternativa para indexação da Home no Wordpress e outro de Carlos Henrique sobre como customizar a função the_excerpt. Apesar de úteis, ainda não traziam exatamente o que procurava. Minha motivação principal era [...]

  8. [...] <?php the_permalink();?> - Exibe a url do post <?php the_title();?> - Exibe o título do post <?php the_content('…');?> - Exibe o conteúdo(texto) do post completo <?php the_excerpt();?> - Exibe o conteúdo do post resumidamente, limitando-se a 55 caracteres. Veja como personalizar esta tag. [...]

  9. Rodrigo Luis says:

    Olá Mister, acabei achando seu site pelo Google, e estou procurando uma forma de resumir os posts da index do meu Blog WordPress, todas as opções que você citou acima funcionaram feitamente, porém até mais do que necessário, por exemplo na index os posts ficam OK resumidos, mas ao clicar para ver o POST completo, ele ainda continuar resumido.

    Estou fazendo algo errado ?? Tem alguma coisa para setar no proprio admin do WP ??

  10. Carlos Henrique says:

    Olá Rodrigo!
    O seu tema não deve ter o arquivo single.php, pois é este arquivo responsável por ser o "template" da pagina dos posts.

    Solução: Se você entende o seu tema, crie um arquivo single.php para ele baseando-se no arquivo index.php e usando o the_content para exibir o contexto por completo. [Ps: Acesse meu portfólio, eu ofereço este serviço- personalização de temas ]

    OU

    Adquira um novo tema que contenha este arquivo.

  11. Rodrigo Luis says:

    Olá Carlos Henrique, grato pela sua ajuda, resolvi o problema com o arquivo single.php

  12. Rodrigo Luis says:

    Como postei um pouco antes, o problema foi resolvido com as páginas de Posts, e com a Index… porém as páginas que são "estáticas", tipo Sobre, Informações, Fale Conosco, contuam sendo resumidas como se estivessem listando posts, quando na verdade ela tem um conteudo "estatico".

  13. Rodrigo Luis says:

    Resolvido com uma busva no Google…. hehehehehe
    Meu template não tinha o arquivo page.php também… mas criei o mesmo e resolvi o problema.

  14. [barba] says:

    acho que

    umas aspas depois do parênteses ajudaria muito
    pq aqui, sem as aspas não funcionou
    abraços!

  15. nninno says:

    Matou a pau! Sucesso!!!!

  16. Muito bom este código do Ezequiel.

  17. Lyncoln says:

    Oi, como faço para deixar os 2 primeiros posts "inteiros" e o restante resumido e mostrando imagens também?

  18. Carinha, muito bacana esse seu mini-tutorial. Para quem está começando é uma mão na roda.

    Mas ele tem um pequeno erro: O excerpt não limita o post à 55 caracteres, e sim a 55 palavras. Para não deixar dúvidas, clique aqui.

Comentar

XHTML: Você pode user estas tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Mr. WordPress - ©2008 / Home | Contato | Divulgue | RSS | Mapa do Site | Política de Privacidade
Movido a WordPress, utilizando o tema Mister WordPress. Versão 1.0 por Carlos Henrique, versão 2.0 por Henrique WINT.