¿Cómo eliminar imágenes que se muestran en una entrada con the_content()?

22 sept 2014, 05:56:41
Vistas: 20.2K
Votos: 2

Tratando de aprender más sobre la creación de mis propios temas y sin usar plugins, quería tener la capacidad de mostrar todas las imágenes en una entrada excluyendo la miniatura en mi archivo single-foobar.php y puedo hacerlo con:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post();    

$thumb_ID = get_post_thumbnail_id( $post->ID );
 $args = array(
   'post_type' => 'attachment',
   'numberposts' => -1,
   'post_status' => null,
   'post_parent' => $post->ID,
   'exclude' => $thumb_ID
  );

$attachments = get_posts( $args );
 if ( $attachments ) {
    foreach ( $attachments as $attachment ) {
       echo '<div class="portproject">';
       $image_res = wp_get_attachment_image( $attachment->ID, ' img-responsive' );
       echo $image_res;
       echo '</div>';
      }
 }
 else { ?>
    <span>No hay imágenes cargadas en este momento</span>
 <?php } endwhile; endif; ?>

Sin embargo, cuando aplico mi HTML estático y luego trato de llamar a get_the_content() con:

<?php 
$content = get_the_content();
$content = preg_replace("/<img[^>]+\>/i", "(image) ", $content);          
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
echo $content;
?>

elimina las imágenes pero deja un (image) en la entrada con espacios y luego muestra el texto restante. Encontré una pregunta similar pero sugiere usar get_the_content() pero eso elimina todos los estilos de la entrada. Entonces mi pregunta es ¿cómo puedo eliminar las imágenes de the_content()? Encontré "Obtener solo texto de the_content en WordPress (Eliminar etiquetas de imagen)" en mis búsquedas pero eso todavía usa el enfoque de get_the_content().

0
Todas las respuestas a la pregunta 3
1
10

Intenta eliminar (imagen), así:

<?php 
$content = get_the_content();
$content = preg_replace("/<img[^>]+\>/i", " ", $content);          
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
echo $content;
?>
22 sept 2014 07:04:51
Comentarios

En caso de imágenes con etiqueta <a>, el contenido llega en etiquetas <a></a> vacías.

Ravi Patel Ravi Patel
19 may 2016 14:54:38
2

El método que prefiero usar es un poco más corto que la respuesta anterior.

<?php $myExcerpt = wp_trim_words( get_the_content(), 20, '' ) ; 
echo $myExcerpt ; ?>

La función de WordPress wp_trim_words() devuelve solo texto (sin imágenes).

wp_trim_words ( string $texto, int $num_palabras = 55, string $mas = null )

25 ene 2016 17:05:42
Comentarios

Eso no es del todo cierto, wp_trim_words también devuelve imágenes

spacebiker spacebiker
10 oct 2018 14:37:07

Esto funcionó para mí - gracias por tomarte el tiempo :-)

michaelmcgurk michaelmcgurk
28 jul 2022 19:24:47
0

casi lo mismo que derekshrink directamente desde el desarrollo de WordPress.

<?php echo wp_trim_words( get_the_content(), 40, '...' ); ?>

puedes cambiar el número de palabras que quieres mostrar

17 jul 2020 08:40:39