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.
Rarst
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ă...
onetrickpony
@Ambitious Amoeba Am verificat codul sursă și am testat codul, este adăugat fără prioritate specificată, deci implicit este cea implicită.
Rarst
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.
gillespieza
@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
@Rarst - Am pus var_dump în header.php, chiar după afișarea meniului...
gillespieza
@Rarst - ups, l-am avut în afara buclei. Returnează o grămadă de lucruri... inclusiv shortcode_unautop dar nimic altceva despre autop
gillespieza
Ai încercat să scazi prioritatea de la 10 (implicit) la 1 așa cum a sugerat One Trick Pony?
editor
Elimină shortcode_unautop, am avut și eu această problemă, este preg_replace din acel filtru care returnează NULL din cauza unei erori.
Backie
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.
Chip Bennett
Am încercat remove_filter ('the_content', 'wpautop', 99); și remove_filter ('the_content', 'wpautop', 1); - nicio modificare.
gillespieza
@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.
gillespieza
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!"
John Smith
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/