web-dev-qa-db-fra.com

L'éditeur supprime les balises <p>

Comment empêcher l'éditeur de supprimer les balises <p> et les div "empty (& nbsp;)" sur les pages?

Depuis que @scribu a demandé un exemple de code, voici:

Contribution:

<p>text</p>
<div>&nbsp;</div>

Sortie:

text
5
Eeyore

J'ai eu des problèmes avec TinyMCE Advanced. J'ai eu du mal avec cela pendant un moment. Enfin découvert une solution simple - Utiliser les codes courts!

Placez ce code dans le fichier functions.php et entrez [br] à l'endroit où vous souhaitez qu'une balise br apparaisse.

add_shortcode("br", "br_tag");

function br_tag(){
        return("<br/>");                            
}
4
Tapefreak

1) Essayez plusieurs plugins différents qui désactivent le formatage et empêchent la suppression intégrée des paragraphes et des espaces supplémentaires dans WP: http://wordpress.org/extend/plugins/search.php?q=formatting&sort=

2) Vous pouvez tromper WP en ajoutant un saut de paragraphe en utilisant <b>&nbsp;<b/> dans l'éditeur html. C'est un espace insécable dans les balises <b>. Vous ne pourrez pas le voir dans l'éditeur visuel, ajoutez-le donc dans l'éditeur htnl. C'est moche, mais cela fonctionne sans avoir à désactiver complètement le formatage.

3) Vous pouvez également le faire dans functions.php, puis envelopper le texte que vous ne voulez pas formater avec les balises <!-- noformat on --> et <!-- noformat off -->.

function newautop($text)
{
    $newtext = "";
    $pos = 0;

    $tags = array('<!-- noformat on -->', '<!-- noformat off -->');
    $status = 0;

    while (!(($newpos = strpos($text, $tags[$status], $pos)) === FALSE))
    {
        $sub = substr($text, $pos, $newpos-$pos);

        if ($status)
            $newtext .= $sub;
        else
            $newtext .= convert_chars(wptexturize(wpautop($sub)));      //Apply both functions (faster)

        $pos = $newpos+strlen($tags[$status]);

        $status = $status?0:1;
    }

    $sub = substr($text, $pos, strlen($text)-$pos);

    if ($status)
        $newtext .= $sub;
    else
        $newtext .= convert_chars(wptexturize(wpautop($sub)));      //Apply both functions (faster)

    //To remove the tags
    $newtext = str_replace($tags[0], "", $newtext);
    $newtext = str_replace($tags[1], "", $newtext);

    return $newtext;
}

function newtexturize($text)
{
    return $text;   
}

function new_convert_chars($text)
{
    return $text;   
}

remove_filter('the_content', 'wpautop');
add_filter('the_content', 'newautop');

remove_filter('the_content', 'wptexturize');
add_filter('the_content', 'newtexturize');

remove_filter('the_content', 'convert_chars');
add_filter('the_content', 'new_convert_chars');
1
markratledge

Je sais que c’est un forum assez ancien ... j’en ai rencontré beaucoup sur cette question de l'éditeur visuel enlevant les balises lors du changement d'onglets ... J'ai simplement suivi ce lien: http://rubayathasan.com/reviews/enabling -line-break-in-wordpress/# comment-1349250

et installé TinyMCE Advanced ... tout fonctionne comme un charme et j’ai maintenant plus de fonctionnalités à ajouter à mon éditeur visuel.

1
Katie

Ajoutez dans votre functions.php

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

Mais vous ne devez pas ajouter <p> et <br/> manuellement. Ces balises ne sont pas enregistrées dans la base de données.

0
Guru 2.0

C'est une question plus ancienne, mais cela pourrait vous aider ou aider quelqu'un d'autre pour une partie:

add_filter('wp_insert_post_data', function ($data, $postarr) {
    $data['post_content'] = wpautop($data['post_content']);

    return $data;
}, 10, 2);

Cela ajoute les balises de paragraphe avant de sauvegarder. Et bien sûr, l'éditeur comprend toujours comment le traiter;)

Cela ne peut pas vous aider avec &nbsp;, mais vous pouvez vous demander si elles sont nécessaires et peut-être que vous pourrez résoudre ce problème avec css? J'essaye juste d'aider. Ou utilisez le hack (<b>&nbsp;<b/>) expliqué par @markratledge

0
Rolf

Si vous allez ajouter balises HTML , pourquoi ne pas utiliser simplement l'éditeur HTML Editor ?

0
Chip Bennett

Necro, mais pour la balise <p>, vous pouvez ajouter une classe ou peut-être une autre propriété.

par exemple.

<p class="nothing-relevant">Foo</p>

ne sera pas dépouillé (avec Gutenberg).

0
Adam Marshall