web-dev-qa-db-fra.com

Comment supprimer des images de l'affichage dans un message avec the_content ()?

Pour en savoir plus sur la création de mes propres thèmes et ne pas utiliser de plug-in, je souhaitais pouvoir afficher toutes les images d'un message, à l'exception de la vignette de mon fichier single-foobar.php. Je peux le faire avec:

<?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; ?>

Cependant, lorsque j'applique mon HTML statique et que j'essaie ensuite d'appeler get_the_content() avec:

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

il supprime les images mais laisse un (image) dans la publication avec des espaces, puis affiche le texte restant. J'ai trouvé un question similaire, mais il suggère d'utiliser get_the_content() mais cela supprime tout le style de l'article. Ma question est donc la suivante: comment puis-je supprimer les images de the_content()? J'ai trouvé " Obtenir the_content WordPress Text Only (supprimer les balises d'image) " dans mes recherches, mais il utilise toujours l'approche get_the_content().

2

Essayez de supprimer (image), comme ceci:

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

La méthode que je préfère utiliser est un peu plus courte que la réponse précédente.

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

La fonction WordPress wp_trim_words () ne renvoie que du texte (pas d’image).

wp_trim_words ( string $text, int $num_words = 55, string $more = null )

4
derekshirk