¿Cómo obtener solo texto de wp_content() y no de wp_excerpt()?

22 feb 2013, 10:15:45
Vistas: 54.6K
Votos: 14

Actualmente estoy desarrollando un sitio web con WordPress 3.5 y necesito obtener el Texto de la Entrada (Solo texto, sin incluir imágenes) en la Página de Archivo. Puedo obtenerlo con el método wp_excerpt() sin ningún problema. Pero el principal problema para mí es que no puedo obtener el diseño exacto del texto. El método wp_excerpt() devuelve texto que ignora todos los espacios extra y saltos de línea. ¿Qué debería hacer? Creo que obtendré Solo Texto de la Entrada con Diseño Exacto si puedo recuperarlo desde el método wp_content(). ¡Gracias de antemano por tu ayuda!

0
Todas las respuestas a la pregunta 5
2
22

O incluso más simple:

echo wp_strip_all_tags( get_the_content() );

Utilizando:

Recupera el contenido de la publicación. (Debe usarse dentro de un Loop)

Una diferencia importante con the_content() es que get_the_content() no pasa el contenido a través del filtro 'the_content'. Esto significa que get_the_content() no incrustará automáticamente videos ni expandirá shortcodes, entre otras cosas.

Elimina correctamente todas las etiquetas HTML, incluyendo script y style.

30 sept 2015 17:57:22
Comentarios

Esto debería ser aprobado como la respuesta.

AlbertSamuel AlbertSamuel
9 abr 2018 02:44:18

Tampoco cubre los shortcodes, envuélvelo en strip_shortcodes()

Ostap Brehin Ostap Brehin
25 may 2020 20:29:06
1

No existe una función nativa de WordPress para obtener solo texto, pero puedes usar filtros de WordPress y código regex para abordar este problema específico.

Para obtener texto sin formato, usa la función get_the_content(). Para aplicar todos los filtros, úsala de esta manera (ver codex: http://codex.wordpress.org/Function_Reference/the_content#Alternative_Usage):

$content = get_the_content();
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
echo $content;

Antes de aplicar los filtros, hay espacio para tus modificaciones personalizadas, por ejemplo, eliminar imágenes. De esta manera:

$content = get_the_content();
$content = preg_replace('/(<)([img])(\w+)([^>]*>)/', "", $content);
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]&gt;', $content);
echo $content;

Fuente del código preg_replace: http://www.phpzag.com/php-remove-image-tags-from-a-html-string-with-preg_replace/

También puede que necesites eliminar shortcodes, si se utilizan. Esto también se puede hacer mediante preg_replace y apuesto a que encontrarás algunos en Google.

22 feb 2013 12:24:20
Comentarios

Muchas gracias por tu respuesta y también me disculpo por mi tardía respuesta. Intenté de esta manera. $content = get_the_content(); $content = preg_replace('/(<)([gallery])(\w+)([^>]*>)/', ”, $content); $content = apply_filters('the_content', $content); $content = str_replace(']]>', ']]>', $content); echo $content; Pero no funcionó. No se eliminaron las imágenes y no puedo ver el texto que esperaba.

Thiha Maung Thiha Maung
24 feb 2013 13:08:16
0

Combiné los resultados de las otras respuestas en esta publicación para eliminar imágenes y audio, etc., pero manteniendo el formato. Primero obteniendo el contenido con get_the_content, luego pasándolo por el filtro "the_content" para agregar formato, etc., y luego usando strip_tags de php para permitir solo un número limitado de etiquetas.

strip_tags(apply_filters('the_content',get_the_content()),"<p><a><br><b><u><i><strong><span><div>");

10 jun 2018 19:50:18
0

El siguiente código funciona perfectamente para mí. Solo agrega esto a tu archivo functions.php en tu tema:

// Hook: para obtener el contenido sin imágenes
add_filter('the_content', 'wpse_get_content_without_images');

function wpse_get_content_without_images() {
    $content = get_the_content();
    $content = preg_replace( '/<img[^>]+./', '', $content );
    echo $content;
}

Luego, obtén el contenido de tu publicación de la manera estándar usando echo the_content();.

16 nov 2017 21:06:20
1

Aquí está el código para eliminar el contenido de la galería y mostrar solo el contenido.

$content = get_the_content();
        $content = preg_replace('/\[gallery.*ids=.(.*).\]/', "", $content);
        $content = apply_filters('the_content', $content);
        $content = str_replace(']]>', ']]&gt;', $content);
        echo $content;
2 ene 2019 05:17:48
Comentarios

¿No es eso exactamente lo que dijeron algunas de las otras respuestas, solo que con menos explicación?

Matthew Brown aka Lord Matt Matthew Brown aka Lord Matt
4 sept 2019 08:26:04