Limitar la cantidad de palabras que se muestran en the_content en el índice

16 mar 2017, 20:55:45
Vistas: 16.4K
Votos: 0

¡Estoy teniendo muchos problemas con esto! Estoy intentando forzar a esta página a mostrar solo una cantidad limitada de palabras independientemente de si insertan una etiqueta "leer más".

Pensé en usar the_excerpt, pero no añade un enlace "leer más" al final del extracto.

Mi página de índice muestra el listado de entradas usando este código:

<div class="entry-content">
    <?php
        /* traductores: %s: Nombre de la entrada actual */
        the_content( sprintf(
            __( 'más %s <span class="meta-nav">...</span>', 'gateway' ),
            the_title( '<span class="screen-reader-text">"', '"</span>', false )
        ) );
    ?>
</div>

En mis ajustes de lectura tengo configurado "Para cada artículo en un feed, mostrar" como "resumen".

Entonces mi pregunta es: ¿Hay alguna forma de limitar the_content() o alternativamente añadir un "leer más" a the_excerpt()?

0
Todas las respuestas a la pregunta 2
3

Prueba wp_trim_words() https://codex.wordpress.org/Function_Reference/wp_trim_words

No podrás usarlo con the_content() porque muestra el contenido directamente. Deberás usarlo con get_the_content() que simplemente devuelve la información.

Así que quedaría algo como esto:

echo wp_trim_words( get_the_content(), $num_words, $more_text );

Edición:

Es importante tener en cuenta que the_content y get_the_content devolverán/mostrarán cualquier HTML que esté en tu contenido, mientras que the_excerpt o get_the_excerpt solo devolverán el texto. Así que usa el que mejor se adapte a tus necesidades según cuántas palabras quieras devolver y si te importa incluir HTML (como imágenes o videos incrustados) en tu salida.

16 mar 2017 21:01:58
Comentarios

Ian, ¡gracias por tu ayuda! Lo intenté e incluso probé esto: echo wp_trim_words( get_the_content(), 40, '<a href="' . esc_url( get_permalink() ) . '">MÁS</a>'); pero no carga el enlace y solo sigue diciendo (más...) ¿alguna idea?

rudtek rudtek
16 mar 2017 21:10:30

Prueba reemplazar get_permalink() con get_the_permalink() y mira si eso soluciona el problema :) Si aún no funciona, intenta eliminar el wrapper esc_url para ver si eso está causando el problema.

Ian Ian
16 mar 2017 21:42:00

Ian, al menos eso puso el enlace, pero no funciona del todo. Si el post tiene menos de 40 palabras o si la etiqueta "more" en el post limita el extracto a menos de 40 palabras, usa el enlace dentro de get_the_content(). Pero fuera de eso añade el enlace junto. Así que obtendría permalink().'more'. Lo que lleva a un error 404. Opté por algo más simple porque no pude resolverlo. De todos modos, te doy un voto positivo por intentarlo. Realmente lo aprecio.

rudtek rudtek
18 mar 2017 19:25:57
0

No pude resolver esto con the_content() así que opté por algo simple y esto funciona:

        the_excerpt();
        echo '<a href="' . esc_url( get_the_permalink() ) . '"> más...</a>';
18 mar 2017 19:26:49