Remove_filter ('the_content', 'wpautop') non funziona
Ho provato a disabilitare la formattazione automatica dei paragrafi in WP usando
remove_filter ('the_content', 'wpautop');
ma continuo a vedere il mio contenuto avvolto nei tag <p>
automatici... Cosa sto sbagliando?
Il codice si trova in fondo a un file functions. Non è in functions.php, ma in un file incluso da functions.php (e inserirlo direttamente in functions.php non cambia il comportamento).
Aggiornamento:
var_dump( $wp_filter['the_content'] );
restituisce NULL
. Come posso verificare perché questo filtro non viene eseguito?
Se stai utilizzando il plugin TinyMCE Advanced, prova a deselezionare questa opzione avanzata:
Smetti di rimuovere i tag <p> e <br /> durante il salvataggio e mostrali nell'editor HTML
Deselezionando questa opzione e utilizzando il codice remove_filter ('the_content', 'wpautop');
nel mio functions.php ha risolto il problema per me.

Il tuo codice è assolutamente corretto. Puoi provare questo snippet nel template per assicurarti che venga rimosso:
var_dump( $wp_filter['the_content'] );
Se non viene rimosso, potrebbe essere che il codice non raggiunga mai la tua rimozione del filtro (ad esempio un return
sopra di esso) oppure che il filtro venga riaggiunto successivamente da qualche altro codice.

oppure prova a modificare la priorità del filtro, il valore predefinito è 10

@Ambitious Amoeba non sono sicuro di cosa intendi? La priorità deve corrispondere esattamente affinché remove_filter()
funzioni.

sì, ma se aggiungi un filtro con priorità 20, non dovresti rimuoverlo con la stessa priorità? forse autop viene aggiunto con una priorità diversa...

@Ambitious Amoeba Ho controllato il sorgente e testato il codice, viene aggiunto senza priorità specificata quindi è quella predefinita.

var_dump( $wp_filter['the_content'] );
restituisce NULL
. Ho provato a cercare con grep wpautop
ma apparentemente nessuno dei file php in wp-content lo contiene, a parte la mia riga di codice.

@Amanda Se chiami quella riga all'interno di una funzione non dimenticare di fare global $wp_filter;
. wpautop
è configurato in wp-includes\default-filters.php
.

@Rarst - Ho inserito il var_dump dentro header.php, subito dopo l'output del menu...

@Rarst - ops, l'avevo fuori dal loop. Restituisce un sacco di roba... incluso shortcode_unautop
ma nient'altro che potessi vedere riguardo autop

Hai provato a ridurre la priorità da 10 (default) a 1 come suggerito da One Trick Pony?

Rimuovi shortcode_unautop, ho avuto questo problema anch'io, è il preg_replace in quel filtro che restituirà NULL a causa di un errore.

Concordo con chi suggerisce di cambiare la priorità del filtro. Aumentala a 11, o 20, o persino 99, solo per vedere se la priorità è effettivamente il problema.

Ho provato remove_filter ('the_content', 'wpautop', 99);
e remove_filter ('the_content', 'wpautop', 1);
- nessun cambiamento.

@Backie ha aggiunto remove_filter ('the_content', 'wpautop');
remove_filter ('the_content', 'shortcode_unautop');
- nessun cambiamento. Provato sia con priorità 1 che 99 - nessun cambiamento.

Niente di tutto questo funziona per me. È estremamente frustrante. Ho bisogno di non avere tag <p> attorno agli script generati dinamicamente da uno shortcode e quindi non enqueueable. D&$^&^$T, Wordpress, smettila di modificare il mio codice! Perché è così difficile dire semplicemente: "Ehi, sono io il programmatore, non tu! Non creare codice, sarò io* a farlo!"

Il mio problema si è verificato durante lo sviluppo di uno shortcode. Ringrazio Samuel Wood per il suo consiglio. Leggi il suo suggerimento qui:
Ah, e se stai inserendo degli shortcode, usa un blocco shortcode invece di scriverli in un blocco P. In questo modo non avrai i tag P wrapper.
https://wordpress.org/support/topic/wpautop-not-working-on-wp_editor/
