¿Cómo obtener solo texto de wp_content() y no de wp_excerpt()?
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!

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 queget_the_content()
no pasa el contenido a través del filtro 'the_content
'. Esto significa queget_the_content()
no incrustará automáticamente videos ni expandirá shortcodes, entre otras cosas.
Elimina correctamente todas las etiquetas HTML, incluyendo script y style.

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(']]>', ']]>', $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.

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.

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>");

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();
.

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(']]>', ']]>', $content);
echo $content;
