rimuovere i tag <p> da the_content

9 ago 2013, 01:15:45
Visualizzazioni: 63.9K
Voti: 8

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?

3
Commenti

Perché il tag <p> è importante? Immagino che il problema di base sia solo lo stile. In tal caso, credo che una soluzione CSS sia la più semplice.

s_ha_dum s_ha_dum
9 ago 2013 01:31:24

il <p> è tuo amico. Dovresti davvero imparare a usarlo.

westondeboer westondeboer
9 ago 2013 03:14:49

entrambi questi commenti sono semplicemente sbagliati. l'html è importante per una varietà di motivi, ma in questo caso perché l'utente sta specificamente chiedendo una soluzione per non usarli.

albert albert
18 dic 2018 18:41:36
Tutte le risposte alla domanda 12
0

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!

9 ago 2013 01:29:38
0

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.

7 dic 2013 20:18:59
0

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

14 nov 2018 18:20:23
0

Puoi usare get_the_content() invece di the_content(). Questo potrebbe risolvere il tuo problema e un'altra soluzione è la stessa descritta da @Chittaranjan

5 giu 2015 14:27:35
0

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

12 gen 2017 09:52:20
1

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; }
12 gen 2017 09:23:52
Commenti

Ottimo suggerimento! Non sapevo che :empty esistesse!

Kenton de Jong Kenton de Jong
10 lug 2020 20:06:42
0

Per rimuovere il tag p dal contenuto puoi utilizzare il seguente codice

<?php remove_filter ('the_content', 'wpautop'); ?>
5 giu 2015 14:34:55
0

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;
}
5 giu 2015 16:41:11
1

inserisci questo codice nel file "style.css" del "Tema figlio attivo"

p:empty {
  display: none;
}
12 gen 2017 08:57:46
Commenti

+1 p:empty { display: none; } @Parthavi-Patel. È buona pratica nasconderlo quando viene trovato un elemento vuoto, poiché rimuovere le funzioni native è una pratica scorretta anche se abbiamo un'opzione.

Maqk Maqk
12 gen 2017 09:04:40
0

Se vuoi rimuovere da una pagina o articolo specifico puoi chiamare questo codice:

<?php remove_filter ('the_content', 'wpautop'); the_content(); ?>
26 set 2017 22:55:55
0
-1

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');

Fonte

27 dic 2017 11:49:37
1
-1

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());

17 dic 2021 09:00:05
Commenti

La domanda riguarda come impedire a WordPress di generare automaticamente questi tag, non come rimuovere i tag da una stringa del database.

Rup Rup
19 dic 2021 22:07:46