web-development-kb-pt.site

Como mostrar apenas as primeiras X palavras (de cada post) na home page?

Como você pode ter isso para que a página inicial do site mostre apenas as primeiras X (digamos 300) palavras da postagem?

Mas sem usar tag "mais" ou trechos cheios de mão? Eu estou procurando por um plugin/hack para WP 2.9 e para frente.

Eu me deparei com várias soluções até agora, mas estou esperando por uma solução recomendada.

Desafios Cheguei a uma cruz até agora:

  • O que acontece caso uma tag (por exemplo) inicie no Word 295 e termine após o Word 301?
  • Pode ser possível ter um X diferente para a página inicial, a página de tags, a página de categoria e assim por diante?
  • O formato do texto pode ser preservado? (todas as imagens e formatação de texto)?
  • Ter o plugin leva a menor quantidade de recursos do servidor.
1
Tal Galili

Alterar a contagem de palavras na home page é fácil:

if( is_home() )
  add_filter( 'excerpt_length', create_function( '', 'return 300;' ) );

Basta replicar esse código e alterar a verificação condicional para adicionar isso a outras páginas. A outra opção é apenas inserir o código na página do modelo (home.php, tag.php, etc.), para que você saiba que ele será definido na página correta.

O uso de the_excerpt() automaticamente tira códigos de acesso e html do conteúdo, se não houver nenhum trecho fornecido. Você pode remover esses filtros, mas torna muito mais difícil fazer contagens de palavras quando você adiciona a marcação à mistura. Se você quiser preservar a formatação/texto/imagens, é para isso que serve a tag more. Ele é inserido manualmente porque é muito difícil descobrir automaticamente em todas as instâncias em que esse intervalo deve ocorrer.

3
John P Bloch

Você pode usar o Plugin Fancy Excerpt For WordPress para isso e modificá-lo um pouco. Ele preserva o estilo, faz a contagem de palavras. Você só precisa modificar isso um pouco para ter sua contagem de palavras e, talvez, se você não gostar das reticências para modificar o final também.

1
hakre

se você só precisa das primeiras 300 palavras do conteúdo, você pode facilmente obtê-lo com

wp_trim_words( $post->post_content, 300, '');
0
Geza Gog