remove_filter('the_content', 'wpautop') no funciona
He intentado desactivar el auto-párrafo de WP usando
remove_filter ('the_content', 'wpautop');
pero sigo obteniendo mi contenido envuelto en etiquetas <p>
automáticas... ¿Qué estoy haciendo mal?
Está al final de un archivo de funciones. No está en functions.php, sino en un archivo que functions.php incluye (y ponerlo en functions.php no cambia el comportamiento).
Actualización:
var_dump( $wp_filter['the_content'] );
devuelve NULL
. ¿Cómo puedo probar por qué este filtro no se está ejecutando?
Si estás utilizando el plugin TinyMCE Advanced, intenta desmarcar esta opción avanzada:
Dejar de eliminar las etiquetas <p> y <br /> al guardar y mostrarlas en el editor HTML
Desmarcar eso y usar el código remove_filter ('the_content', 'wpautop');
en mi archivo functions.php funcionó para mí.

Tu código es absolutamente correcto. Puedes probar este fragmento en la plantilla para asegurarte de que se está eliminando:
var_dump( $wp_filter['the_content'] );
Si no es así, puede ser que el código nunca llegue a tu eliminación del filtro (por ejemplo, un return
antes de él) o que el filtro se vuelva a añadir más tarde por algún otro código.

@Ambitious Amoeba no estoy seguro de lo que quieres decir? La prioridad debe coincidir exactamente para que remove_filter()
funcione.

sí, pero si añades un filtro con prioridad 20, ¿no deberías eliminarlo con la misma prioridad? quizás autop se añade con una prioridad diferente...

@Ambitious Amoeba He revisado el código fuente y probado, se añade sin prioridad especificada así que por defecto es así.

var_dump( $wp_filter['the_content'] );
devuelve NULL
. He intentado buscar con grep wpautop
pero aparentemente ninguno de los archivos php en wp-content lo contiene, aparte de mi línea de código.

@Amanda Si llamas a esa línea dentro de alguna función no olvides hacer global $wp_filter;
. wpautop
se configura en wp-includes\default-filters.php
.

@Rarst - Puse el var_dump dentro de header.php, justo después de la salida del menú...

@Rarst - rayos, lo tenía fuera del loop. Devuelve un montón de cosas... incluyendo shortcode_unautop
pero nada más que pudiera ver sobre autop

¿Probaste bajando la prioridad de 10 (valor por defecto) a 1 como sugirió One Trick Pony?

Elimina shortcode_unautop, yo mismo he tenido este problema, es el preg_replace en ese filtro el que devolverá NULL debido a un error.

Estoy de acuerdo con quienes sugieren cambiar la prioridad del filtro. Auméntala a 11, o 20, o incluso 99, solo para ver si la prioridad es de hecho el problema.

Intenté remove_filter ('the_content', 'wpautop', 99);
y remove_filter ('the_content', 'wpautop', 1);
- sin cambios.

@Backie agregó remove_filter ('the_content', 'wpautop');
remove_filter ('the_content', 'shortcode_unautop');
- sin cambios. Probé ambos con prioridades 1 y 99 - sin cambios.

Nada de esto funciona para mí. Esto es intensamente frustrante. Necesito no tener etiquetas <p> alrededor de scripts generados dinámicamente por un shortcode y que por lo tanto no se pueden encolar. M$%&·$# WordPress, ¡deja de cambiar mi código! ¿Por qué es tan difícil simplemente decir: "Oye, ¡yo soy el programador, no tú! ¡No crees código, *yo* lo haré!"

Mi problema surgió mientras desarrollaba un shortcode. Créditos a Samuel Wood. Mira su consejo aquí:
Ah, y si estás insertando shortcodes, usa un bloque de shortcode en lugar de escribirlos en un bloque P. Así no tendrás etiquetas P envolventes.
https://wordpress.org/support/topic/wpautop-not-working-on-wp_editor/
