limita las palabras en el contenido de la publicación y agrega el enlace de leer más

4

Como puede ver en el código, la rutina es mostrar la publicación que tiene un id de 266 . Ahora todo lo que quiero es limitar las palabras que se muestran en el contenido de la publicación de esa publicación. Digamos, quiero limitar las palabras a un número de 300 y luego agregar un enlace para leer más.

Este es el código que obtuve hasta ahora:

    $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>";    
?>
    
pregunta Juliver Galleto 15.10.2012 - 00:27

2 respuestas

2

Siempre tengo el mismo problema con el extracto de publicación, publicar contenido. Hay varios ganchos y funciones para este propósito, como @kaiser señaló. Pero a veces no hacen exactamente lo que quiero.

Aquí está mi solución, escribo mi propia función que toma el contenido de la publicación y la truncamos en un número específico de palabras:

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;
}
    
respondido por el Anh Tran 15.10.2012 - 03:26
1

Hay tres filtros que controlan el enlace »más«, dependiendo de qué función / Etiqueta de plantilla esté en uso. Lo malo es que se están interceptando entre ellos. Lo bueno es que puede simplemente modificar la salida del filtro usando current_filter() para recuperar el nombre del filtro adjunto actualmente y modificar la salida.

Luego obtuvimos el filtro 'excerpt_length' para limitar la longitud del extracto. Este no nos permite agregar un enlace permanente, pero nos ayuda en combinación con los otros filtros. Ver el complemento 2 nd .

El complemento Permalink-more

Este complemento agrega el enlace permanente al contenido o extracto, dependiendo de lo que se muestra. También restablece el filtro excerpt_more para que no muestre nada , por lo que no interfiere con los otros 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' );

El complemento de longitud de extracto

Si solo desea modificar la longitud del extracto, puede usar una configuración de filtro mucho más simple. El siguiente plugin hace un trabajo muy ingenioso. Reduce el contenido (estamos en el bucle y tenemos datos de publicación para acceder) a 300 palabras. En el siguiente paso cuenta las letras de cada palabra. Luego simplemente devuelve este número (asignado dinámicamente).

<?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 complementos son "configuración cero". Solo cargue, active, listo.
  2. Tendrás que usar the_content() o the_excerpt() en tu tema para hacer uso de estos complementos.
respondido por el kaiser 15.10.2012 - 03:17

Lea otras preguntas en las etiquetas