Come rimuovere le immagini visualizzate in un post con the_content()?

22 set 2014, 05:56:41
Visualizzazioni: 20.2K
Voti: 2

Sto cercando di imparare di più sulla creazione dei miei temi personalizzati senza utilizzare plugin. Vorrei avere la possibilità di visualizzare tutte le immagini in un post escludendo la miniatura nel mio file single-foobar.php e posso farlo 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>Nessuna immagine caricata al momento</span>
 <?php } endwhile; endif; ?>

Tuttavia, quando applico il mio HTML statico e poi provo a chiamare 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;
?>

rimuove le immagini ma lascia un (image) nel post con degli spazi e poi visualizza il testo rimanente. Ho trovato una domanda simile ma suggerisce di utilizzare get_the_content() che però rimuove tutta la formattazione dal post. Quindi la mia domanda è: come posso rimuovere le immagini da the_content()? Ho trovato "Ottenere solo il testo da the_content in WordPress (Rimuovere i Tag Immagine)" dalle mie ricerche ma anche quello utilizza l'approccio con get_the_content().

0
Tutte le risposte alla domanda 3
1
10

Prova a rimuovere (immagine), in questo modo:

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

Nel caso di immagini con tag <a>, il contenuto arrivava tra tag <a></a> vuoti.

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

Il metodo che preferisco utilizzare è solo leggermente più breve della risposta precedente.

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

La funzione di WordPress wp_trim_words() restituisce solo testo (nessuna immagine).

wp_trim_words ( string $testo, int $num_parole = 55, string $altro = null )

25 gen 2016 17:05:42
Commenti

Non è proprio vero, wp_trim_words restituisce anche le immagini

spacebiker spacebiker
10 ott 2018 14:37:07

Questo ha funzionato per me - grazie per aver dedicato del tempo :-)

michaelmcgurk michaelmcgurk
28 lug 2022 19:24:47
0

quasi lo stesso di derekshrink direttamente dallo sviluppatore WordPress.

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

puoi cambiare il numero di parole che vuoi mostrare

17 lug 2020 08:40:39