remove_filter( 'the_content', 'wpautop' ); solo para ciertos tipos de entrada

24 ene 2013, 01:09:00
Vistas: 27.5K
Votos: 7

Quiero intentar eliminar la adición automática de etiquetas <p> y <br> para mi tipo de entrada personalizado.

Parece que

remove_filter( 'the_content', 'wpautop' );

hará esto, pero ¿cómo podría hacer el cambio solo para mi tipo de entrada elegido? He intentado escribir una función para esto, pero parece que no funciona:

function remove_tags() {
    global $post_type;

    if ( 'client' == $post_type ) {
        remove_filter( 'the_content', 'wpautop' );
    }
}
2
Comentarios

¿Dónde estás colocando estas funciones?

s_ha_dum s_ha_dum
24 ene 2013 01:15:38

en el archivo de mi plugin de tipo de publicación personalizado

user319940 user319940
24 ene 2013 01:16:52
Todas las respuestas a la pregunta 2
3
12

Engancha el filtro the_content antes de que se llame al filtro wpautop, verifica el tipo de publicación y elimina el filtro wpautop, el cual es agregado en wp-includes/default-filters.php con la prioridad por defecto 10:

add_filter( 'the_content', 'wpse_82860_remove_autop_for_posttype', 0 );

function wpse_82860_remove_autop_for_posttype( $content )
{
    # edita el tipo de publicación aquí
    'post' === get_post_type() && remove_filter( 'the_content', 'wpautop' );
    return $content;
}
24 ene 2013 06:07:47
Comentarios

Después de años, todavía tengo problemas para entender el manejo de priority en los filtros de WP. ¿No significa 0 que se llama primero y después se llama el wpauto predeterminado con su priority de 10 y vuelve a poner los <p>?

Volker E. Volker E.
1 feb 2015 02:52:51

@VolkerE. wpautop no se llama más, porque se ha desregistrado anteriormente.

fuxia fuxia
1 feb 2015 02:55:03

Ah, claro. ¡Gracias! Y ni siquiera es tarde donde estoy ahora. :}

Volker E. Volker E.
1 feb 2015 02:58:48
3
11
remove_filter('the_content','wpautop');

//decidir cuándo aplicar el párrafo automático

add_filter('the_content','my_custom_formatting');

function my_custom_formatting($content){
if(get_post_type()=='my_custom_post') //si no funciona, podrías necesitar pasar el objeto del post actual a get_post_type
    return $content;//sin autop
else
 return wpautop($content);
}

encontré este código en stackoverflow - parece que hace el truco.

24 ene 2013 01:28:20
Comentarios

+1 por encontrar tu propia respuesta :) Sin embargo, por favor publica la URL de la pregunta donde encontraste el código.

s_ha_dum s_ha_dum
24 ene 2013 01:29:19

Esto fallará cuando otro plugin quiera hacer lo mismo para otro tipo de entrada personalizada.

fuxia fuxia
24 ene 2013 05:59:19