web-dev-qa-db-fra.com

Supprimer les balises <p> et <br/> dans les publications WordPress

Chaque fois que je poste du contenu sur une page de publication WordPress, certaines balises de paragraphe telles que <p> et <br/> sont affichées. Ce qui montre un espace supplémentaire dans la sortie. Alors, y a-t-il une solution pour cela? Comment supprimer tous les tags?

48
NewUser

Cela se produit à cause de wpautop de WordPress. Ajoutez simplement la ligne de code ci-dessous dans le fichier functions.php de votre thème

remove_filter( 'the_content', 'wpautop' );

remove_filter( 'the_excerpt', 'wpautop' );

Pour plus d'informations: http://codex.wordpress.org/Function_Reference/wpautop

102
Santosh Sonarikar

La suppression du filtre wpautop n'est pas la solution la plus flexible . Si vous recherchez une solution page par page ou poste par poste, vous pouvez utiliser ce plugin:

https://wordpress.org/plugins/dont-muck-my-markup/

Il ajoutera une case à cocher sur chaque publication/page pour que vous choisissiez si le comportement principal de Wordpress sera désactivé ou non pour cette page particulière.

Ceci est particulièrement utile lorsque vous souhaitez publier du code HTML et que les <br> et <p> générés automatiquement gâchent votre conception soigneusement conçue. 

Le plug-in a également une option globale, ce qui vous permet de désactiver ce comportement par défaut sur toutes les pages/publications.

Un autre plug-in est https://wordpress.org/plugins/preserve-code-formatting/ mais je n’ai essayé que celui que j’ai décrit.

1
bg17aw

essaye ça

$my_postid = $post->ID;
$content_post = get_post($my_postid);
$content = $content_post->post_content;
$content = apply_filters('the_content', $content);
$content = strip_tags($content, '<p><br/>');
echo $content;
1
Gowri

Utilisez ce code pour supprimer<p></p>avant l’initialisation de l’éditeur.

function tinymce_remove_root_block_tag( $init ) {
    $init['forced_root_block'] = false; 
    return $init;
}
add_filter( 'tiny_mce_before_init', 'tinymce_remove_root_block_tag' );
0
myvahid

Parfois, la suppression de la fonction wpautop de WordPress dans le fichier functions.php de votre thème ne fonctionne pas (pour certaines raisons).

J'ai donc une autre solution, comment arrêter de supprimer les balises <br> ou les doubles sauts de ligne (<br><br>).

  1. Apporter des modifications à votre fichier /wp-content/themes/your_theme_name/functions.php

Ajoutez 2 lignes en haut de vos fonctions.

remove_filter('the_content', 'wpautop');
remove_filter('the_excerpt', 'wpautop');

Cela désactivera initialement la fonction wpautopop.

  1. Apportez des modifications dans le fichier /wp-includes/formatting.php dans la fonction wpautop.

    A) Remplacez function wpautop( $pee, $br = true) par function wpautop( $pee, $br = false).

    Cela désactivera également la fonction wpautopop de tous les endroits.

    B) Remplacez $pee = preg_replace('|<br\s*/?>\s*<br\s*/?>|', "\n\n", $pee); par 

    $pee1 = $pee;
    $pee = preg_replace('|<br\s*/?>\s*<br\s*/?>|', "\n\n", $pee);
    $pee = $pee1;
    

    Cela empêchera le système de supprimer les étiquettes doubles <br>. (Je sais que le code est étrange mais simple //$pee n'aide pas ici à cause de la balise ?>).

    C) Remplacez $pee = preg_replace("/\n\n+/", "\n\n", $pee); par //$pee = preg_replace("/\n\n+/", "\n\n", $pee);

    Cela empêchera le système de supprimer plusieurs sauts de ligne.

    D) Changer ceci:

    $pee = preg_replace('!<p>\s*(</?' . $allblocks . '[^>]*>)!', "$1", $pee);
    

    pour que:

    //$pee = preg_replace('!<p>\s*(</?' . $allblocks . '[^>]*>)!', "$1", $pee);
    

    Cela empêchera le système de supprimer les sauts de ligne après l'ouverture ou avant la balise d'élément de bloc de fermeture, telle que <div>, <article>, etc.

    E) Changer ceci:

    $pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*</p>!', "$1", $pee);
    

    pour que:

    //$pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*</p>!', "$1", $pee);
    

    Presque pareil: Ceci empêchera le système de supprimer les sauts de ligne après l’ouverture ou avant la balise d’élément de bloc de fermeture, telle que <div>, <article>, etc.

    F) Changer ceci:

    $pee = preg_replace('!<br />(\s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)[^>]*>)!', '$1', $pee);
    

    pour que:

    // $pee = preg_replace('!<br />(\s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)[^>]*>)!', '$1', $pee);
    

    Cela empêchera le système de supprimer <br> à la fin du bloc.

    G) Changer ceci:

    $pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*<br />!', "$1", $pee);
    

    pour que:

    //$pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*<br />!', "$1", $pee);
    

    Cela empêchera le système de supprimer <br> après une balise de bloc en ouverture ou en fermeture.

J'espère que ça va aider! Et lisez les commentaires dans ce fichier - ils vous aideront à comprendre ce que vous devez activer ou désactiver.

0
Kir Mazur

Par défaut, WordPress ajoute des balises de paragraphe <p></p> aux descriptions de catégorie. Arrêtez cela en ajoutant ce qui suit à votre functions.php file

// Remove p tags from category description
remove_filter('term_description','wpautop');

Simple et facile (sans code).

Je vous remercie

0
Jodyshop

utilisez ceci $ editor = wp_filter_nohtml_kses ($ _ POST ['editor1']);

0
Alpesh Navadiya

La réponse acceptée ne fonctionnant pas pour moi dans WP 4.8.1, je vous propose une solution de contournement qui a fonctionné pour moi. Il me suffisait d'ajouter une classe au p et WordPress ne l'enlèverait pas.

<p class="whatever">
0
Pablo Santamaria