rimuovere i tag <p> da the_content
Ho un formato di post di tipo Immagine e sto riscontrando un problema dove l'immagine viene avvolta da un tag <p>
. Voglio eliminare quel tag (in particolare nella versione single.php
) per questi tipi di post.
Come posso intervenire sulla formattazione in un tema e rimuovere i tag <p>
, o creare qualsiasi formato desiderato per l'output di questo tipo di post, senza influenzare i post con un formato diverso?

Se questo tipo di post si chiama "image", puoi creare un template singolo per gestire la visualizzazione solo del post type "image".
Basta copiare il tuo file 'single.php' e rinominare la copia 'single-image.php'. Ora puoi controllare solo i post di tipo immagine. Per rimuovere i tag, mi piace usare la funzione strip_tags()
. Se stampi il contenuto del post con the_content()
applica già il filtro del contenuto, avvolgendo le righe nei tag <p>
.
Ecco un esempio di come potresti ottenere il contenuto della tua immagine senza i tag:
$imageContent = get_the_content();
$stripped = strip_tags($imageContent, '<br><a>'); //sostituisci <br> e <a> con i tag che vuoi mantenere dopo la rimozione
echo $stripped;
Spero che questo ti aiuti!

WordPress aggiunge automaticamente i tag <p>
al contenuto. Pertanto, questi vengono visualizzati durante il caricamento del contenuto. Questo avviene grazie al filtro wpautop
. Per rimuovere questo filtro solo per il tipo di post image
, puoi aggiungere il seguente codice nel file functions.php.
// Aggiungi il filtro per gestire i tag p
add_filter( 'the_content', 'wti_remove_autop_for_image', 0 );
function wti_remove_autop_for_image( $content )
{
global $post;
// Verifica se è una pagina singola e il tipo di post è 'image', quindi rimuovi
if ( is_single() && $post->post_type == 'image' )
remove_filter('the_content', 'wpautop');
return $content;
}
is_single()
verifica se è in visualizzazione un singolo post.

Per impostazione predefinita, WordPress aggiunge i tag di paragrafo alle descrizioni delle categorie. Per evitare questo comportamento, aggiungi il seguente codice al tuo file functions.php
// Rimuove i tag p dalla descrizione della categoria
remove_filter('term_description','wpautop');
Semplice e veloce (senza codice).
Grazie

Basta aggiungere la seguente riga di codice nel file functions.php del tuo tema
Per il contenuto:
remove_filter( 'the_content', 'wpautop' );
Per l'estratto:
remove_filter( 'the_excerpt', 'wpautop' );
scopri di più: https://codex.wordpress.org/Function_Reference/wpautop

Puoi utilizzare classi specifiche per i post come single-post
o single-format-standard
e nasconderle come necessario solo in una singola pagina, in modo da evitare conflitti con altre parti del sito web.
Esempio di codice CSS*
.single-post .entry-content p:empty { display: none; }
Esempio di codice CSS per il formato specifico di post Immagine
.single-format-image .entry-content p:empty { display: none; }

Un altro modo per codificarlo basato sulla soluzione di @chittaranjan
add_filter( 'the_content', 'remove_autop_for_image', 0 );
function remove_autop_for_image( $content ) {
global $post;
if ( is_singular('image'))
remove_filter('the_content', 'wpautop');
return $content;
}

sebbene la query sia stata risolta, pubblico quanto segue per ulteriore riferimento.
// Rimuove il filtro wpautop dagli excerpt
remove_filter ('the_exceprt', 'wpautop');
// Rimuove il filtro wpautop dal contenuto
remove_filter ('the_content', 'wpautop');
// Rimuove il filtro wpautop dalla descrizione dei termini
remove_filter('term_description','wpautop');

Utilizzando wp_strip_all_tags
puoi eliminare tutti i tag html inclusi p, div e altri
https://developer.wordpress.org/reference/functions/wp_strip_all_tags/
wp_strip_all_tags(category_description());
