¿Cómo eliminar las imágenes para que no se muestren en una publicación con the_content ()?

2

Tratando de aprender más sobre cómo crear mis propios temas y no usar ningún complemento, quería la capacidad de mostrar todas las imágenes en una publicación, 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 pictures loaded at this time</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 publicación con espacios y luego muestra el texto restante. Encontré una pregunta similar pero sugiere usar get_the_content() , pero eso elimina todo el estilo de la publicación. Entonces mi pregunta es ¿cómo puedo eliminar las imágenes de the_content() ? Encontré " Obtención de the_content WordPress Text Only (Eliminar etiquetas de imagen) "de mis búsquedas, pero que todavía utiliza el enfoque get_the_content() .

    
pregunta DᴀʀᴛʜVᴀᴅᴇʀ 22.09.2014 - 04:56

2 respuestas

8

Intenta eliminar (imagen), como esto:

<?php 
$content = get_the_content();
$content = preg_replace("/<img[^>]+\>/i", " ", $content);          
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
echo $content;
?>
    
respondido por el Bernie 22.09.2014 - 06:04
4

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 $text, int $num_words = 55, string $more = null )

    
respondido por el derekshirk 25.01.2016 - 16:05

Lea otras preguntas en las etiquetas