El editor elimina las etiquetas <p>

28 feb 2011, 05:37:11
Vistas: 25.9K
Votos: 9

¿Cómo puedo evitar que el editor elimine mis etiquetas <p> y los "divs vacíos (&nbsp;)" en las páginas?

Ya que @scribu solicitó un ejemplo de código, aquí está:

Entrada:

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

Salida:

texto
6
Comentarios

¿Por qué los puntos negativos?

Eeyore Eeyore
8 mar 2011 03:52:44

simplemente usa este plugin que tiene una opción incorporada para eliminar automáticamente las etiquetas p y br http://wordpress.org/extend/plugins/tinymce-advanced/

User User
3 ago 2011 13:54:33

Vamos, seguramente en los últimos 8 años debe haber una solución para esto... considerando que yo también lo estoy experimentando y parece no haber ninguna razón por la que se eliminen los elementos <p>. ¿Por qué sigue pasando esto?

Lee Lee
21 may 2019 12:11:02

Si vas a agregar etiquetas HTML, ¿por qué no simplemente usar el Editor HTML?

Chip Bennett Chip Bennett
3 ago 2011 14:36:00

¿y cómo hacemos eso?

jeff jeff
30 sept 2013 13:13:27

Para tu información, esto es lo que estoy usando, y aún así está eliminando las etiquetas <p> que rodean los shortcodes en el front end. No hay ninguna acción ocurriendo dentro del shortcode, pero es extraño que desaparezcan sin razón.

Lee Lee
21 may 2019 12:10:12
Mostrar los 1 comentarios restantes
Todas las respuestas a la pregunta 7
1

Tuve problemas con TinyMCE Advanced. Luché con esto por un tiempo. Finalmente descubrí una solución simple: ¡Usar Shortcodes!

Coloca este código en functions.php e ingresa [br] donde quieras que aparezca una etiqueta br.

add_shortcode("br", "br_tag");

function br_tag(){
        return("<br/>");                            
}
31 ago 2012 00:16:38
Comentarios

Jaja, eso es Wordpress en pocas palabras.

qwerty qwerty
27 nov 2012 11:39:37
0

1) Prueba algunos plugins diferentes que desactivan el formato y detienen la eliminación automática de párrafos y espacios en blanco de WordPress: http://wordpress.org/extend/plugins/search.php?q=formatting&sort=

2) Puedes engañar a WP para que agregue un salto de párrafo usando <b>&nbsp;<b/> en el editor HTML. Es un espacio de no separación dentro de etiquetas <b>. No podrás verlo en el editor visual, así que agrégalo en el editor HTML. Es feo, pero funciona sin necesidad de desactivar completamente el formato.

3) También puedes hacer esto en functions.php y luego envolver el texto que no quieres formatear con las etiquetas <!-- noformat on --> y <!-- 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)));      //Aplicar ambas funciones (más rápido)

        $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)));      //Aplicar ambas funciones (más rápido)

    //Para eliminar las etiquetas
    $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');
28 feb 2011 06:23:15
0

Agrega en tu functions.php

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

Pero tendrás que agregar manualmente los <p> y <br/>. Estas etiquetas no se guardan en la base de datos.

28 feb 2011 08:58:25
0

Sé que este es un foro bastante antiguo... Me he encontrado con muchos sobre este problema del editor visual que elimina etiquetas al cambiar de pestañas... Simplemente seguí este enlace: http://rubayathasan.com/reviews/enabling-line-break-in-wordpress/#comment-1349250

e instalé TinyMCE Advanced... Todo funciona a la perfección y ahora tengo más funciones para agregar a mi editor visual.

29 jun 2015 23:31:53
0

Es una pregunta antigua, pero esto podría ayudarte a ti o a alguien más con una parte:

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

    return $data;
}, 10, 2);

Esto añade las etiquetas de párrafo antes de guardar. Y por supuesto, el editor sigue entendiendo cómo procesarlo ;)

No puede ayudarte con &nbsp;, pero podrías preguntarte si son necesarios y tal vez puedas resolverlo con css? Solo intento ayudar. O usa el truco (<b>&nbsp;<b/>) explicado por @markratledge

16 nov 2017 21:53:22
0

Un poco de necro, pero para la etiqueta <p> puedes agregar una clase u otra propiedad.

ejemplo:

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

no será eliminado (usando Gutenberg).

22 ene 2019 19:25:11
0
-1

He descubierto que si añades una clase a tu etiqueta de párrafo, WordPress no la eliminará. Ni siquiera necesitas tener CSS para esa clase.

10 oct 2022 23:26:46