remove_filter( 'the_content', 'wpautop' ); solo per determinati tipi di post

24 gen 2013, 01:09:00
Visualizzazioni: 27.5K
Voti: 7

Voglio provare a rimuovere l'aggiunta automatica dei tag <p> e <br> per il mio tipo di post personalizzato.

Sembra che

remove_filter( 'the_content', 'wpautop' );

faccia questo, ma come posso applicare la modifica solo per il mio tipo di post scelto? Ho provato a scrivere una funzione per questo, ma non sembra funzionare:

function remove_tags() {
    global $post_type;

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

Dove stai inserendo queste funzioni?

s_ha_dum s_ha_dum
24 gen 2013 01:15:38

nel file del mio plugin per i custom post type

user319940 user319940
24 gen 2013 01:16:52
Tutte le risposte alla domanda 2
3
12

Agganciati a the_content prima che il filtro wpautop venga chiamato, controlla il tipo di post e rimuovi il filtro wpautop, che viene aggiunto in wp-includes/default-filters.php con la priorità predefinita 10:

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

function wpse_82860_remove_autop_for_posttype( $content )
{
    # modifica qui il tipo di post
    'post' === get_post_type() && remove_filter( 'the_content', 'wpautop' );
    return $content;
}
24 gen 2013 06:07:47
Commenti

Dopo anni, ho ancora problemi a capire la gestione della priority dei filtri in WP. 0 non significa che viene chiamato per primo e poi il default wpauto viene chiamato con la sua priority di 10 e reinserisce i <p>?

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

@VolkerE. wpautop non viene più chiamato, perché è stato deregistrato in precedenza.

fuxia fuxia
1 feb 2015 02:55:03

Oh, certo. Grazie! E non è nemmeno tardi qui da me. :}

Volker E. Volker E.
1 feb 2015 02:58:48
3
11
// Rimuove il filtro di formattazione automatica dei paragrafi predefinito di WordPress
remove_filter('the_content','wpautop');

// Aggiunge un filtro personalizzato per decidere quando applicare i paragrafi automatici
add_filter('the_content','my_custom_formatting');

/**
 * Funzione personalizzata per la formattazione del contenuto
 * @param string $content Il contenuto da formattare
 * @return string Contenuto formattato
 */
function my_custom_formatting($content){
    // Verifica se il post corrente è di un tipo personalizzato
    if(get_post_type()=='my_custom_post') // Se non funziona, prova a passare l'oggetto post corrente a get_post_type
        return $content; // Non applica la formattazione automatica
    else
        return wpautop($content); // Applica la formattazione automatica dei paragrafi
}

Trovato questo codice su StackOverflow - sembra fare al caso nostro.

24 gen 2013 01:28:20
Commenti

+1 per aver trovato la tua risposta :) Per favore, pubblica anche l'URL della domanda dove hai trovato il codice.

s_ha_dum s_ha_dum
24 gen 2013 01:29:19

Questo causerà problemi quando un altro plugin vorrà fare la stessa cosa per un altro tipo di post personalizzato.

fuxia fuxia
24 gen 2013 05:59:19