Remove_filter ('the_content', 'wpautop') nu funcționează
Am încercat să dezactivez funcția automată de paragrafare din WP folosind
remove_filter ('the_content', 'wpautop');
dar tot primesc conținutul meu încadrat în tag-uri automate <p>
... Ce fac greșit?
Codul se află la finalul unui fișier de funcții. Nu este în functions.php, ci într-un fișier inclus de functions.php (iar plasarea lui direct în functions.php nu schimbă comportamentul).
Actualizare:
var_dump( $wp_filter['the_content'] );
returnează NULL
. Cum pot testa de ce acest filtru nu se execută?
Dacă utilizați pluginul TinyMCE Advanced, încercați să debifați această opțiune avansată:
Oprește eliminarea tagurilor <p> și <br /> la salvare și afișează-le în editorul HTML
Debifarea acestei opțiuni și utilizarea codului remove_filter ('the_content', 'wpautop');
în fișierul meu functions.php a funcționat pentru mine.

Codul tău este absolut corect. Poți încerca acest fragment în șablon pentru a verifica dacă este eliminat:
var_dump( $wp_filter['the_content'] );
Dacă nu apare, este posibil ca codul să nu ajungă la eliminarea filtrului tău (de exemplu, un return
înaintea acestuia) sau filtrul să fie readăugat mai târziu de alt cod.

@Ambitious Amoeba nu sunt sigur ce vrei să spui? Prioritatea trebuie să corespundă exact pentru ca remove_filter()
să funcționeze.

da, dar dacă adaugi un filtru cu prioritatea 20, nu ar trebui să îl elimini cu aceeași prioritate? poate că autop este adăugat cu o prioritate diferită...

@Ambitious Amoeba Am verificat codul sursă și am testat codul, este adăugat fără prioritate specificată, deci implicit este cea implicită.

var_dump( $wp_filter['the_content'] );
afișează NULL
. Am încercat să caut cu grep
pentru wpautop
dar se pare că niciun fișier php din wp-content nu conține acest lucru, în afară de linia mea de cod.

@Amanda Dacă apelezi acea linie în interiorul unei funcții, nu uita să folosești global $wp_filter;
. wpautop
este configurat în wp-includes\default-filters.php
.

@Rarst - Am pus var_dump în header.php, chiar după afișarea meniului...

@Rarst - ups, l-am avut în afara buclei. Returnează o grămadă de lucruri... inclusiv shortcode_unautop
dar nimic altceva despre autop

Ai încercat să scazi prioritatea de la 10 (implicit) la 1 așa cum a sugerat One Trick Pony?

Elimină shortcode_unautop, am avut și eu această problemă, este preg_replace din acel filtru care returnează NULL din cauza unei erori.

Sunt de acord cu cei care sugerează schimbarea priorității filtrului. Mărește-o la 11, 20 sau chiar 99, doar pentru a verifica dacă prioritatea este de fapt problema.

Am încercat remove_filter ('the_content', 'wpautop', 99);
și remove_filter ('the_content', 'wpautop', 1);
- nicio modificare.

@Backie a adăugat remove_filter ('the_content', 'wpautop');
remove_filter ('the_content', 'shortcode_unautop');
- fără nici o modificare. Am încercat cu priorități 1 și 99 - tot fără efect.

Nimic din toate astea nu funcționează pentru mine. E extrem de frustrant. Am nevoie să nu am tag-uri <p> în jurul scripturilor generate dinamic printr-un shortcode și care deci nu pot fi încărcate cu enqueue. La naiba, Wordpress, oprește-te din a-mi modifica codul! De ce e atât de greu să poți spune: "Hei, eu sunt programatorul, nu tu! Nu genera cod, *eu* mă ocup!"

Problema mea a apărut în timp ce dezvoltam un shortcode. Mulțumiri lui Samuel Wood. Vezi sfatul său aici:
Și dacă adăugați shortcode-uri, folosiți un bloc de shortcode în loc să le tastați într-un bloc P. Așa nu veți avea tag-uri P înconjurătoare.
https://wordpress.org/support/topic/wpautop-not-working-on-wp_editor/
