limite as palavras no conteúdo da postagem e adicione read more link

4

Como você pode ver no código, a rotina é exibir a postagem que possui id de 266 . Agora tudo que eu quero é limitar as palavras exibidas no conteúdo da postagem. Digamos que eu queira limitar as palavras a um número de 300 e, em seguida, adicionar um link de mais informações.

Este é o código que eu tenho até agora:

    $post_id = 266;
    echo "<div id='widgets-wrapper3'><div id='marginwidgets' style='overflow: auto; max-width: 100%; margin: 0 auto; border: none !important;'>";

    $queried_post = get_post($post_id); 
    echo "<div class='thewidgets'>";
    echo $queried_post->post_content;
    echo '</div>';

    echo "</div></div>";    
?>
    
por Juliver Galleto 15.10.2012 / 00:27

2 respostas

2

Eu sempre tenho o mesmo problema com o trecho do post, postar conteúdo. Existem vários ganchos e funções para esse propósito, como o @kaiser apontou. Mas às vezes eles não fazem exatamente o que eu quero.

Aqui está minha solução, escrevo minha própria função que pega o conteúdo da postagem e trunca em um número especificado de palavras:

function wpse69204_excerpt( $num_words = 20, $ending = '...', $post_id = null )
{
    global $post;

    // Truncate post content
    $current_post = $post_id ? get_post( $post_id ) : $post;
    $excerpt = strip_shortcodes( $current_post->post_content );
    $excerpt = wp_trim_words( $excerpt, $num_words, $ending );

    // Read more link
    $excerpt .= '<a href="' . get_permalink( $post ) . '" title="">Continue reading...</a>';

    return $excerpt;
}
    
por Anh Tran 15.10.2012 / 03:26
1

Existem três filtros que controlam o link "mais", dependendo de qual função / Tag de modelo está em uso. O ruim é que eles estão interceptando um ao outro. O bom é que você pode simplesmente modificar a saída do filtro usando current_filter() para recuperar o nome do filtro atualmente anexado e modificar a saída.

Então nós temos o 'excerpt_length' -filter para limitar o tamanho do trecho. Este não nos permite adicionar um permalink, mas nos ajuda em combinação com os outros filtros. Veja o plugin 2 nd .

O plugin permalink-more

Este plugin adiciona o permalink ao conteúdo ou trecho - dependendo do que é exibido. Ele também redefine o excerpt_more -filter para produzir nada , portanto, não está interferindo nos outros filtros.

<?php
/** Plugin Name: (#69204) »kaiser« Adds a permalink to the excerpt & content */

/**
 * Alters the display of the "more" link
 * 
 * @param  string $permalink
 * @param  string $text
 * @return string $html
 */
function wpse69204_more_link( $output )
{
    $html .= '<span class="post-more">&nbsp;';
    $html .= sprintf(
        '<a href="%s#more-%s" class="more-link" title="read more" >'
        ,get_permalink()
        ,get_the_ID()
    );
    $html .= '</a></span>';

    // Override 'excerpt_more'
    if ( 'excerpt_more' === current_filter() )
        return;

    // Strip the content for the 'get_the_excerpt' filter.
    $output = wp_trim_words( $output, 300 );

    // Append for the excerpt
    if ( 'get_the_excerpt' === current_filter() )
        return $output.$html;

    // The permalink for the 'the_content_more_link'-filter.
    return $html;
}
# "More" link for the content
add_filter( 'the_content_more_link', 'wpse69204_more_link' );
add_filter( 'get_the_excerpt', 'wpse69204_more_link' );
add_filter( 'excerpt_more', 'wpse69204_more_link' );

O plug-in de trechos com mais comprimento

Se você quiser apenas modificar o comprimento do trecho, pode usar uma configuração de filtro muito mais simples. O plugin a seguir faz um trabalho muito bacana. Reduz o conteúdo (estamos no loop e temos dados de post para acessar) para 300 palavras. Na próxima etapa, conta as letras de cada palavra. Então simplesmente retorna este número (dinamicamente atribuído).

<?php
/** Plugin Name: (#69204) »kaiser« Limit excerpt length by word count */

function wpse69204_excerpt_length( $length )
{
    $to_count = array_splice( get_the_content(), 300 );
    $i = 0;
    foreach ( $to_count as $word )
    {
        $i += strlen( $word );
    }

    return $i;
}
add_filter( 'excerpt_length', 'wpse69204_excerpt_length' );

Notas

  1. Ambos os plugins são »zero configuração«. Basta fazer upload, ativar, pronto.
  2. Você precisará usar the_content() ou the_excerpt() em seu tema para usar esses plug-ins.
por kaiser 15.10.2012 / 03:17