• Bom dia!

    Personalizei um template para um cliente e apareceu um problema super chato. Eu preparei o template para que o archive.php exibisse posts com a função Excerpt, exibindo apenas um limite de palavras pré selecionado e imagens pequenas quando alguém clicasse em uma categoria, tag, autor, etc.

    Juntamente com o excerpt coloquei também o botão “leia mais”, que no caso do meu cliente se chama “Continue…”, personalizado pra funcionar. Optei para que o texto fosse cortado com 30 palavras e voilá, perfeito! Tudo funcionando normalmente!

    O problema é que meu cliente fez um post com apenas 10 palavras antes da tag <!– more –> e o maldito botão Continue não aparece em posts que tenham menos de 30 palavras antes da tag. Não posso diminuir o limite de palavras se não todos os outros posts ficarão muito pequenos.

    A situação perfeita seria:
    1 – Se fosse possível determinar que a tag <!– more –> controlasse o excerpt, ao invés deste limite de palavras.
    2 – Se existisse um limite mínimo de palavras no excerpt de modo que o botão “Continue…” aparecesse.

    Enfim, no archive.php e search.php está assim:
    <?php wpe_excerpt('wpe_excerptlength_featured', 'wpe_excerptmore'); ?>

    No functions.php está assim:
    function wpe_excerptlength_featured($length) {
    return 30;
    }
    function wpe_excerptlength_index($length) {
    return 10;
    }

    function wpe_excerpt($length_callback='', $more_callback='') {
    global $post;
    if(function_exists($length_callback)){
    add_filter('excerpt_length', $length_callback);
    }
    if(function_exists($more_callback)){
    add_filter('excerpt_more', $more_callback);
    }
    $output = get_the_excerpt();
    $output = apply_filters('wptexturize', $output);
    $output = apply_filters('convert_chars', $output);
    $output = '<p>'.$output.'</p>';
    echo $output;
    }

    function new_excerpt_more($more) {
    return '...ID) . '">' . '<div id="continue"> </div>' . '';
    }
    add_filter('excerpt_more', 'new_excerpt_more');

    Existe algum jeito de corrigirmos isso de forma que o botão “Continue…” aparecesse em posts com menos de 30 palavras antes do <!–more–>?
    Exemplo de tag com problema no site do cliente: http://magnatas.net/tag/jogos/

    Muito obrigado pessoal!

Visualizando 4 respostas - 1 até 4 (de um total de 4)
  • Olá,

    Você não poderia cortar os caracteres e inserir direto o link para o leia mais?! Assim, não importa o no. de caracteres o “leia mais” sempre vai estar lá, mesmo posts sem título.

    O Twenty Ten tem um exemplo de como se controla o comprimento do texto de the_excerpt() e se insere automaticamente o “leia mais”, talvez ajude, consulte arquivo functions.php.

    Criador do tópico Simon Blacksmith

    (@simonvinicius)

    Ok Diana, vou dar uma olhada no functions.php do Twenty Ten. Mas por favor não feche este tópico, vou voltar aqui pra dizer se deu certo ou não.

    Valeu! 😉

    Criador do tópico Simon Blacksmith

    (@simonvinicius)

    Oi Diana, eu troquei o template aqui pelo Twenty Ten e verifiquei a página de Tags conforme te passei. O erro é o mesmo, o bug permanece e não funciona, ou seja, o botão Leia Mais simplesmente some. Por favor, peque um tamplate de testes seu aí e faça um teste em localhost mesmo, crie um post com umas 2 ou 3 palavras no máximo, coloque o <!– more –> e escolha uma tag ou categoria para ele. Depois vá até a página de Tags e veja o que acontece.

    Parece ser um bug do WordPress. Eu procurei em fóruns americanos e muitos tiveram este mesmo problema.

    Olha no fórum WP americano: http://en.forums.wordpress.com/topic/bug-missing-read-more-links-on-category-pages
    No fim deste tópico um membro do WordPress disse que estaria verificando o que poderia ser feito, mas em nenhum lugar encontrei a resposta, parece ser um erro do WordPress mesmo. :'(

    Faça um botão você mesmo:

    <a href="<?php the_permalink(); ?>">continue...</a>
Visualizando 4 respostas - 1 até 4 (de um total de 4)
  • O tópico ‘Limite mínimo de caracteres usando a função Excerpt’ está fechado para novas respostas.