El editor elimina las etiquetas <p>
¿Cómo puedo evitar que el editor elimine mis etiquetas <p>
y los "divs vacíos ( )" en las páginas?
Ya que @scribu solicitó un ejemplo de código, aquí está:
Entrada:
<p>texto</p>
<div> </div>
Salida:
texto

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/>");
}

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> <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');

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.

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
, pero podrías preguntarte si son necesarios y tal vez puedas resolverlo con css? Solo intento ayudar. O usa el truco (<b> <b/>
) explicado por @markratledge
