3 maneiras diferentes de customizar a função the_excerpt

Postado por Carlos em 04/01/08 às 7:35 pm e arquivado em Dicas e tutorias
Compartilhe este post: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • del.icio.us
  • Facebook
  • Linkk
  • LinkTo
  • UEBA
  • Rec6

Primeiro tuto do blog…

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 <?php the_excerpt();?> no lugar de <?php the_content('leia mais..');?>.

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 more), já o the_excerpt exibe só um resumo do post, que por padrão, chama os últimos 55 caracteres.

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:
function wp_trim_excerpt($text) { // Fakes an excerpt if needed global $post; if ( '' == $text ) { $text = get_the_content(''); $text = apply_filters('the_content', $text); $text = str_replace(']]>', ']]&gt;', $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; }

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

$excerpt_length = 55;
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.

Ps: Essa é a mais simples.

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.

<?php function limit_the_content($excerpt_length = 55, $resume = 'Continue Lendo »', $resume_link = true) { global $post; if($resume_link) $resume = '<a href="'.get_permalink().'" title="'.$resume.'">'.$resume.'</a>'; $text = get_the_content(''); $text = apply_filters('the_content', $text); $text = str_replace(']]>', ']]>', $text); $text = strip_tags($text); $words = explode(' ', $text, $excerpt_length + 1); if (count($words) > $excerpt_length) { array_pop($words); array_push($words, $resume); $text = implode(' ', $words); } echo $text; } ?>

Simples, em vez de usar <?php the_content(); ?> ou <?php the_excerpt(); ?> você usará uma nova tag :

<?php limit_the_content(); ?>

Personalizando:

<?php limit_the_content(palavras, more, link); ?>

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:

<?php limit_the_content(25, "(...)", false); ?>

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!

Tags:,

Posts relacionados

Comentários - ( 17 )


Joao
Enviado em 05/01/08

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



Precisla
Enviado em 05/01/08

Vlw! Muito Obrigada…Estava precisando disso!



Cido
Enviado em 13/01/08

Putz, passei a tarde toda procurando isso. Valeu mesmo



Flávio Ricardo
Enviado em 14/01/08

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!



Eduardo
Enviado em 22/01/08

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!



Carlos Henrique
Enviado em 22/01/08

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.



Como alterar a função the_excerpt
Enviado em 04/02/08

[...] 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 [...]



Mr. WordPress - Explorando as Template Tags
Enviado em 18/02/08

[...] <?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. [...]



Rodrigo Luis
Enviado em 08/03/08

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 ??



Carlos Henrique
Enviado em 08/03/08

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.



Rodrigo Luis
Enviado em 08/03/08

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



Rodrigo Luis
Enviado em 08/03/08

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".



Rodrigo Luis
Enviado em 08/03/08

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.



[barba]
Enviado em 20/03/08

acho que

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



nninno
Enviado em 09/04/08

Matou a pau! Sucesso!!!!



Érico Oliveira
Enviado em 17/04/08

Muito bom este código do Ezequiel.



Lyncoln
Enviado em 14/07/08

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




Nome(apelido, nickname...)
E-mail(Obrigatório, mas não será exibido)


Você pode usar tags XHTML para formatar o texto do seu comentário, ex: <strong>, <em>, <a href="">, <li>,etc. Obs: Para exibir códigos e scripts nos comentários você deve digitá-los dentro das tags <code> e </code>, ex: <code><?php bloginfo('name');?></code>


Populares

MrWP » Free Themes


BB Clean Theme

Simple Blue Magazine

Mr. WordPress - ©2008 / Web Design por Carlos Henrique| Contato | Divulgue | RSS | MrWP Themes